Dudeney Sayısı

30.000’e kadar olan Dudeney Sayı toplamını hesaplayan programın Algoritması ve Kodu:

Tam sayı döndürecek şekilde DudeneySayi isminde bir fonksiyon tanımlayacağız ve tam sayı tipinde bir parametresi yazacağız. Bu n sayısı bizim dudeney mi değil mi diye kontrol edeceğimiz sayı. Fonksiyonu bool/ean tipinde de tanımlayabilirdik, ama bu soruyu öyle çözmeyeceğiz. Basamakların toplamına ihtiyacımız olacak bu yüzden bToplam isminde tam sayı bir değişken tanımlayıp içine 0 değerini atacağız. Tam sayı tipinde bir değişkeni tanımlayıp içine n parametresini atadık. Bunu neden yaptık diyebilirsiniz, sebebi ise ileri ki adımlarda basamakları ayırırken sayıya işlem yaptıracağız, sonrasında değişkenin değeri değişecek ve daha da sonraki adımlarda if koşulunun içinde sayıyı kontrol ederken, yanlış sayıyı kontrol etmiş olacağız. Bunun önüne geçmek için bu atama işlemini gerçekleştirdik.

Bir sayının 10’a bölümünden kalan bize o sayının birler basamağını verir.

Bir while döngüsü oluşturacağız ve içine m 0’dan büyükse koşulunu yazacağız. Bu döngünün içindeki ilk satıra bToplam = bToplam + (m % 10) yazıyoruz. Bu satırın anlamı sayının 10’a bölümünden kalanı ile bToplam değişkenini topla ve bToplam değişkeninin içine ata. Sonraki satırda ise m = m / 10 yani sayımızı 10 ile böl ve çıkan sonucu m değişkenine ata. Bu şekilde anlamadıysanız mantığını bir örnekle anlatayım. Örneğin benim bir sayım var, bu sayı 234 olsun. Bu döngü önce 234 > 0 koşulunu kontrol edecek ve döngünün içine girecek. 234’ü 10’a bölecek ve kalanı 4’ü alacak. bToplam = 0 + 4 yapacak ve bToplam’ın yeni değeri 4 olacak. Sonraki satırda 234/10 = 23 bulacak. (Tam sayı tipinde bölme işleminin sonucu ondalık çıksa bile, virgülden sonrası alınmaz) Sonra 23>0 diye bakacak, doğru olduğu için bir alt satıra inip 23%10 = 3 işlemini yapıp, bToplam = 4+3 yapıp bToplam’ın yeni değerini 7 olarak atayacak. Sonraki adımda 23/10=2 işlemini yapıp tekrar koşul kısmına çıkacak. Bu şekilde 0 olana kadar gidecek.

Döngüden çıktıktan sonra basamak toplamının küpünü bulmak için bToplam 2 kere çarpılacak. Son olarakta basamak toplamı(bToplam) ve alınan sayı(n) birbirine eşit mi değil mi kontrolü yapılacak. Eğer eşitse n döndürülecek, değilse sıfır.

Main fonksiyonunda ise tam sayı tipinde bir toplam değişkeni oluşturuyoruz ve içinde 0 değerini atıyoruz. Bir for döngüsü oluşturup sayaca(i) 0 atıyoruz, 30000’e eşit olana kadar sayacı birer birer arttırtıyoruz. Bu döngünün içindeki if döngüsü DudeneySayi fonksiyonunu çağırıyor ve fonksiyonun parametresi i oluyor. Fonksiyondan döndürelecek sonuç ile i eşitse toplam değerinin üstüne sayaçta tutulan değeri toplam değişkeni ile toplayıp, atıyoruz. Son olarakta toplam değişkenini ekrana bastırıyoruz.

DudeneySayi(n) Fonksiyonunun Algoritması:

  1. DudeneySayi(n)
  2.  Değer ata(bToplam =0, m = n)
  3. Eğer m > 0 ise
  4. Basamak değerlerini topla
  5. Sayıyı 10’a böl
  6. 3. adıma geri dön
  7. Değilse
  8. Basamak toplamının küpünü hesapla
  9. Eğer basamak toplamı girilen sayıya eşitse
  10. Döndür n
  11. Değilse
  12. Döndür 0

Ana Fonksiyonun Algoritması:

  1. Değer ata (toplam = 0)
  2. Döngü oluştur (0’dan 30.000’e kadar birer birer arttır)
  3. Eğer DudeneySayi(i) eşit ise i
  4. Topla ( toplam = toplam + i)
  5. Yazdır toplam

dudeneydiya

(Akış Diyagramını Visio 2013 ile çizdim)

dudeneysayı-java

(Java Programlama dili ile kodunu yazdım)

dudeneysayı-cpp

(C++ Programlama Dili ile kodunu yazdım)

(C# Programlama Dili ile kodunu yazdım)

Leave a Reply

Your email address will not be published. Required fields are marked *