Necati Ergin Hocamın kendi sayfasında bulunan çalışma sorularını ve cevaplarını burada yanıtlamaya çalıştım. Sorulara buradan ulaşabilirsiniz.
Bir tamsayının basamaksal kökünü (digital root) bulan get_digital_root isimli işlevi tanımlayınız:
int get_digital_root(int val);
|
Bir tamsayının basamaksal kökü tüm basamaklarının toplanması ile elde edilen tamsayıdır. Basamakları toplama, tek basamaklı bir sayı elde edilene kadar sürdürülür. Örneğin 34879 sayısının basamaksal kökü 4‘dür:
34879 -> 3 + 4 + 8 + 7 + 9 = 31
31 -> 3 + 1 = 4
|
Yanıt:
34879 örnek sayısının basamaklarını toplamının ilk adımda 31 olduğu ve aynı işlemin tekrar yapılması gerektiğini gördük. Sorunun çözümünü düşünürken bu durum bir döngü yapısını çağrıştırıyor.#include <stdio.h> #include <stdlib.h> int sumDigitalRoot(int num) { int sum = 0; while (num > 0) { sum += num % 10; num = num/10; } return sum; } int get_digital_root(int val) { int result = val; while((result = sumDigitalRoot(result)) > 9); /* while (1) { result = sumDigitalRoot(result); if(result < 9) { break; } } */ return result; } int main() { printf("Result: %d", get_digital_root(34879)); return 0; }
Hiç yorum yok:
Yorum Gönder
Son Ütücü