PDA

Tam Sürümünü Görmek İçin : Mod almada ve bölmede sorun:(


Ustura Kemal
29/11/2007, 19:42
Merhaba arkadaşlar aşağıdaki programı (programın amacı girilen 5 basamaklı sayının ayrı ayrı basamaklarını ayırmak ve aralarında 3 boşluk olacak şekilde yazdırmak . Misal 56789 girdiysek çıktı 5 6 7 8 9 şeklinde )

turbo c de derliyorum ve ne zaman bölüm ve mod almaya kalksam eksili rakamlar veriyor bana

örneğin 43876 yı
-2 -1 -6 -6 0 olarak ayırıyor:( acaba yanlış nerededir ?

#include<stdio.h>

int main()
{
int rakam,r1,r2,r3,r4,r5,r6;

printf("5 basamakl say girin : \n");
scanf("%d",&rakam);
r2=(rakam%10000)/1000;
r3=(rakam%1000)/100;
r4=(rakam%100)/10;
r5=(rakam%10);
printf("%d %d %d %d %d",rakam/10000,r2,r3,r4,r5);
return 0;
}


ultraaslan06
29/11/2007, 20:06
Kodlarında bir yanlışlık yok. Derleyiciden kaynaklanan bir sorundur muhtemelen.
Hiç turbo c kullanmadığım için fazla yardımcı olamayacağım ama derleyicini değiştirebilirsin dev-c++ veya visual c++ express edition kullanabilirsin.
Kolay gelsin...

nilsonmandela
29/11/2007, 22:23
Derleyicinizin integer veri tipi için izin verdiği aralığı aşıyorsunuz. rakam değişkenini unsigned int olarak tanımlarsanız sorununuzun çözüldüğünü görürsünüz.
Aşağıda linki bulunan dosyayı da incelerseniz faydalı olabilir. İnternette bunun gibi pekçok kaynak bulabilirsiniz.

http://www.cs.technion.ac.il/~nikol/material/types_sizes.pdf

Ustura Kemal
30/11/2007, 09:37
Çok teşekkür ederim ikinize de arkadaşlar . Unsigned yapınca olay çözüldü .