yazikusagi.com

Algoritma Örneği: Armstrong Sayısı Belirleme

Klavyeden girilen sayının Armstrong sayısı olup olmadığını tespit eden programın algoritmasını yazıp akış şemasını çizelim.

Armstrong sayısı tanım olarak, sayının basamaklarında yer alan sayıların kuvvetleri toplamının sayının kendisine eşit olması şeklinde ifade ediliyor. Biraz karmaşık olan bu tanımı şöyle anlatayım. Mesela 407 sayısı bir Armstrong sayısıdır. Çünkü 43+03+73=407 olmaktadır. 1 hariç tek basamaklı hiçbir sayı Armstrong sayısı değildir. Ayrıca 2 basamaklı Armstrong sayısı da yoktur. 4 basamaklı sayılarda 1634 bir Armstrong sayıdır. Çünkü 14+64+34+44=1634’tür. Bu örnekte sadece 3 basamaklı sayıların Armstrong sayısı olup olmadığını kontrol eden algoritmaya yer vereceğiz. Bununla beraber sayının kaç basamaklı olduğunu tespit eden fonksiyonu da bu algoritmaya dahil edip kontrolü tüm sayılar için yapacak bir algoritma da yazabiliriz. Fakat şu an zamanım olmadığı için bu tarz bir algoritma yazmıyorum.

1. Başla
2. n,r toplam ve sayı değişkenleri ile toplam=0 değerini tanımla
3. Sayı değerini klavyeden oku
4. r=n%10, toplam=toplam+(r*r*r) ve n=n/10 işlemlerini yap
5. n>0 ise 4.adımı tekrarla, değilse 6.adıma geç
6. sayı=toplam olup olmadığına bak
7. sayı=toplam ise ekrana “Sayı Armstrong sayısıdır”, değilse “Sayı Armstrong sayısı değildir” ifadesini yaz
8. Dur

Akış şemaları aşağıdadır.

Armstrong sayısı belirleyen algoritma

Bu algoritmanın kaynak dosyasını buradan indirebilirsiniz.

Aşağıda ise sayı basamağını da kullanıcının girmesi şartıyla, bir basamaklı sayılar hariç tüm sayılar için Armstrong sayısı kontrolü yapan ikinci bir algoritmanın akış şemasını ve kaynak dosyasını veriyorum. Bu ikinci algoritma, 1 için çalışmayacak. Zaten girilen sayının en az iki basamaklı olmasını istiyoruz. Vaktim olduğunda bu örneği daha güzel şekilde güncellemeyi düşünüyorum.

Armstrong sayısı belirleyen algoritma

Bu algoritmanın kaynak dosyasını buradan indirebilirsiniz.


Yorumlar

Yapacağınız yorumlarda kendi fikirlerinizi belirtiniz. Sağdan soldan kopyala-yapıştır yapmayınız! Kimseye hakaret etmeyiniz! Gizlilik ve yorum kurallarımız için buraya tıklayınız.