PDA

Tam Sürümünü Görmek İçin : C de sayi basamaklarinin çözümlenmesi


zerdest
24/01/2008, 12:46
c de girilecek olan sayının 3 basamagı aşmaması ve girilen bu üç basamaklı sayının 10 luk tabandaki çözümlenmiş halini göstere bilmek için hangi fonksiyonları kulanmam gerekiyor??
örnek:
girilen sayi:123
çözümlenmiş hali: 1 yüzlük + 2 onluk + 3 birlik şeklinde olacak.


choldax
24/01/2008, 12:53
bunun c bilgisiyle pek ilgisi yok :) bu matematik bilgisine dayanan bi program.
kullanacağın fonksiyonlar muhtemelen printf() ve scanf() olacaktir :P:D

zerdest
24/01/2008, 13:04
girilecek olan sayinin 3 basamagı aştıgında bir hata mesajı ve sayının çözümlenme noktasını çözseydim print(); ve scanf(); fonksiyonlarını rahatlıkla kullanırdım.

-aga-
24/01/2008, 13:19
if (sayi/1000>0)
{
}
------------------
------------------
int sayi=xxxxxx;
int basamak[100]={0};
int el=0;
while (sayi>0)
{
basamak[el]=(sayi%10^(el+1))/(10^el);
sayi=sayi-basamak[el];
el++;
}
-------------------------
!Sanırım üst ^ bu şekilde alınmıyor.

choldax
24/01/2008, 13:19
kodu yollarsan yardımcı olabilirim

quasimodo
24/01/2008, 13:20
sayi 999 dan buyukse 3 basamagi asmistir :D

zerdest
24/01/2008, 13:30
if (sayi/1000>0)
{
}
------------------
------------------
int sayi=xxxxxx;
int basamak[100]={0};
int el=0;
while (sayi>0)
{
basamak[el]=(sayi%10^(el+1))/(10^el);
sayi=sayi-basamak[el];
el++;
}


c diline yeni başladım verdigin kodlarda şimdilik karşılaşmadıgım noktalar var. (sayi%10^(el+1))/(10^el); tam olarak neyi ifade ettigini anlayamadım. daha basit bir yolu yokmu bunun. çıktı olarak şöyle birşey istiyorum:

üç basamaklı bir sayi giriniz:123 (bu degeri kullanıcı girecek sabit degil)
sayinin çözümlemesi: 1 yüzlük + 2 onluk + 3 birlik

not: hazır kod vermek yerine verdiginiz kodu nasıl kullanacagımı açıklayarak veirseniz daha faydalı olur ve daha öğretici olur.

-aga-
24/01/2008, 13:52
int sayi=xxxxxx;
int basamak[100]={0};

if (sayi>0 && sayi<1000)
{
for (int a=0;a<=2;a++)
{
basamak[a]=sayi%10
sayi=sayi/10;
}
}

sayi%10---->sayinin mod(10) daki değeri.Örnek:967%10=7:)

zerdest
24/01/2008, 14:12
hocam şimdi şu kısmı bir türlü anlamadım.
ben bir sayi giriyorum 123 diye. bunun yüzle, onlar ve birler basamagı olarak nasıl ayıracagım. girilen sayi sabit degil ve kullanıcı girecek. sabit olsaydi daha kolay olurdu ama degişken olunca işin içinden çıkamadım.

jit
24/01/2008, 14:19
bunun için önce bir string dizin olacak. {birler,onlar,yüzler,binler,onbinler,yüzbinler} vs diye gidecek dizinin içeriği ta ki kullanıcının girebileceği maksimumu sayının basamak değerine kadar. ondan sonra bir sayıyı basamaklarına ayırma işlemlerini yaparken sırasıyla bu dizinin elemanlarını yanına yazıcaksın.

zerdest
24/01/2008, 14:26
yani ben c de dizin fonksiyonlarını bilmeden bu işi yapamayacagım:(
neyse yardımlarınız için teşekkürler. dizin konusunu inceledikten sonra çözerim herhalde.
yinede dizin fonksiyonlarını kullanmadan bir çözüm varsa yazarsınız;)

-aga-
24/01/2008, 14:26
bunun için önce bir string dizin olacak. {birler,onlar,yüzler,binler,onbinler,yüzbinler} vs diye gidecek dizinin içeriği ta ki kullanıcının girebileceği maksimumu sayının basamak değerine kadar. ondan sonra bir sayıyı basamaklarına ayırma işlemlerini yaparken sırasıyla bu dizinin elemanlarını yanına yazıcaksın.
Ta kendisi.
Basamak[x] 0'dan büyükse o değeri ve stringdeki değeri anlamlı cümle şeklinde birleştireceksin.Pardon Char[] daki değeri.