sayfa başı

4 Mart 2019 Pazartesi

C Çalışma Soruları – 23 (basamaksal kök)

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ü