Tam Sürümünü Görmek İçin : C de sayi basamaklarinin çözümlenmesi
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.
bunun c bilgisiyle pek ilgisi yok :) bu matematik bilgisine dayanan bi program.
kullanacağın fonksiyonlar muhtemelen printf() ve scanf() olacaktir :P:D
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.
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.
kodu yollarsan yardımcı olabilirim
quasimodo
24/01/2008, 13:20
sayi 999 dan buyukse 3 basamagi asmistir :D
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.
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:)
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.
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.
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;)
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.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.