[Çözüldü] Basit bir kod ama ben anlayamadım.

Başlatan ewreka, 02 Mart 2015 - 15:04:41

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ewreka

Merhaba dostlar aranıza yeni katıldım.
C çalışıyorum bir örnek kod buldum ama anlayamadım kod şöyle :


#include <stdio.h>  /*stdio.h dosyası dahil ediliyor*/

int main()
{
   int n, t, sum = 0, remainder;    /*tamsayı değişkenleri tanımlanıyor*/

   printf("Enter an integer\n");     /*ekranda bir tamsayı girilmesini basıyor ekrana*/
   scanf("%d", &n);                   /*girilen sayı klavyeden alınıyor*/

   t = n;                                 /*klavyeden girilen sayı "t" ye atanıyor*/

   while (t != 0)                       /*"t" "0" dan farklı olduğu sürece...*/
   {
      remainder = t % 10;           /*burada 10 a bölümünde kalan sayı remainder değişkeniene atanıyor.Muhtemelen en son haneyi elde ediyor mesala 123 / 10 kalan 3 gibi...*/
      sum       = sum + remainder; /*sum değişkeniyle remainder değişkeni toplanıp tekrar sum'a atanıyor*/
      t         = t / 10;                 /*Burayı anlayamadım!!!!!!!!!!!!!!! sayıyı 10 a bölüyor ama amacı ne çözemedim !!!!!!!!!!!!!!*/
   }

   printf("Sum of digits of %d = %d\n", n, sum);  /*Ve bilgileri ekrana basıyor.*/

   return 0;
}


Burada mesela "1" girdim, bu while döngüsüne giriyor ama yine de "1", "10" a bölünmüyor "1" in "10" dan kalanı da yok.Kısacası ben bu kodu anlayamadım arkadaşlar.
Şimdiden teşekkür ederim arkadaşlar ilgilendiğiniz için.

freeman

Basamak sayısı için.

Mesela 123 girdiniz ya, ilk adımda
t=t/10
ifadesinde t=12 olacaktır.

Bir sonraki adımda t, sıfırdan farklı olduğu için(değeri 12)  döngü devam edecek bu sefer t=t/10 ifadesinde t=1 olacaktır. Döngü yine devam edecektir.
En sonda t=0 olduğundan döngü sonlanıp, rakamları toplamını yazacak.

Umarım anlatabilmişimdir.
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

ewreka

sayın SkynetX ilginiz için çok teşekkür ederim.
Biraz daha iyi anladım.
Yani anladığım kadarıyla her basamağa ayrı ayrı ele alıyor doğrumu? Mesala 123 te ilk döngüde 3'ü sonra 2'yi en son olarakta 1'i alıyor doğrumudur?

Şu an anlayamadığım tek şey 3. döngüde yani 1 sayısını nasıl elde ettiği yani 1 in 10 dan böleni de kalan da olmaz, ayrıca 1 rakamı 10'a da bölünmez.

tekrar teşekkür ederim.

freeman

#3
Eğer 4 basamaklı bir rakam girmişseniz, döngü 4 kere tekrar etmeli ki her basamağı toplayabilseniz. İşte t değişkeni bu vazifeyi görüyor.
1234 sayısını 10 böldüğünüzde t=1234, daha sonra t=123, daha sonra=12, daha sonra = 1, en sonda da t=0 olup döngü sonlanacaktır.

1%10 (1 mod 10) mod işlemidir ve sonucu 1 'dir ewreka.


Mesaj tekrarı yüzünden mesajınız birleştirildi. Bu mesajın gönderim tarihi : 02 Mart 2015 - 15:56:19


Bölme işleminde de zaten 1 in 10 a bölümünden elde 0 olduğundan t = 0olur.
Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.

ewreka

İş tamam dır çok teşekkür ederim sayın SkynetX.
Şimdi anladım.Sağlıcakla kalın.

freeman

Good morning and welcome to the Black Mesa Transit System. This automated train is provided for the security and convenience of the Black Mesa Research Facility personnel.