Girilen Rakamı Ekrana Harflerle Yazdırmak?
-
c# ödevi için lazım beyler max 6 basamak olan bir sayıyı
örğ : 123 456 sayısını "yüz yirmi üç bin dört yüz elli altı" yazıcak bi algoritmaya ihtiyacım varne gibi fikir kurabiliriz bunun için ?
-
Switch case olabilir. Daha bilgili arkadaşlar yardımcı olacaktır.
-
genelde yazıya çevrilen kısım dizide tutulur. birler onlar binler şeklinde yapılır. tabii bazıları bunu biraz daha amatörleştirerek 100 e bölüp kalana göre switch case ile değer atıyorlar. öyle de yapılır ama büyük sayılarda sıkıntı olur
http://www.hayatisahin.com/BlogEngine/?tag=/C%23+Say%C4%B1y%C4%B1+Yaz%C4%B1ya+%C3%87evirme
burada güzel bir örnek buldum.. inceleyip kendi kodunu yazabilirsin. anlamadığın yeri buradan sorabilrsin, yardımcı olmaya çalışırım
-
Kendim yazdım zamanında:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>void sayiyazdir(char * s_sayi);
int main()
{
char str[36];
system ("COLOR F0");
printf ("Bu program girdiginiz bir tamsayinin okunusunu verir.\n");
printf ("\nSayi: ");
gets(str);
sayiyazdir(str);
system ("PAUSE");
return 0;
}void sayiyazdir(char * s_sayi)
{
int s[12], c[3], i, b, counter=-1, slen;
bool binstate;for (i=0; i<12; i++) s[i]=0;
counter=-1;slen=strlen(s_sayi);
for (i=0; i<slen; i++)
{
if (i%3==0) counter++;switch (s_sayi[slen-i-1])
{
case '0': b=0; break;
case '1': b=1; break;
case '2': b=2; break;
case '3': b=3; break;
case '4': b=4; break;
case '5': b=5; break;
case '6': b=6; break;
case '7': b=7; break;
case '8': b=8; break;
case '9': b=9; break;
default: printf ("\nGirdiginiz sayida rakam harici karakter\nolup olmadiginikontrol edip tekrar deneyin.\n\n"); return;
}if (i%3==0) s[counter]+=b;
if (i%3==1) s[counter]+=b*10;
if (i%3==2) s[counter]+=b*100;}
printf ("\nOkunusu:");for (i=counter; i>=0; i--)
{
binstate=true;
c[0]=s[i]%10;
c[1]=(s[i]/10)%10;
c[2]=s[i]/100;
if (c[2]!=0)
{
if (c[2]==2) printf (" iki");
if (c[2]==3) printf (" uc");
if (c[2]==4) printf (" dort");
if (c[2]==5) printf (" bes");
if (c[2]==6) printf (" alti");
if (c[2]==7) printf (" yedi");
if (c[2]==8) printf (" sekiz");
if (c[2]==9) printf (" dokuz");
printf (" yuz");
}
if (c[1]!=0)
{
if (c[1]==1) printf (" on");
if (c[1]==2) printf (" yirmi");
if (c[1]==3) printf (" otuz");
if (c[1]==4) printf (" kirk");
if (c[1]==5) printf (" elli");
if (c[1]==6) printf (" atmis");
if (c[1]==7) printf (" yetmis");
if (c[1]==8) printf (" seksen");
if (c[1]==9) printf (" doksan");
}if (i==1 && s[1]==1) binstate=false;
if (c[0]!=0)
{
if (c[0]==1 && binstate==true) printf (" bir");
if (c[0]==2) printf (" iki");
if (c[0]==3) printf (" uc");
if (c[0]==4) printf (" dort");
if (c[0]==5) printf (" bes");
if (c[0]==6) printf (" alti");
if (c[0]==7) printf (" yedi");
if (c[0]==8) printf (" sekiz");
if (c[0]==9) printf (" dokuz");
}
if (i==1 && s[i]>0) printf (" bin");
if (i==2 && s[i]>0) printf (" milyon");
if (i==3 && s[i]>0) printf (" milyar");
if (i==4 && s[i]>0) printf (" trilyon");
if (i==5 && s[i]>0) printf (" katrilyon");
if (i==6 && s[i]>0) printf (" kentrilyon");
if (i==7 && s[i]>0) printf (" seksilyon");
if (i==8 && s[i]>0) printf (" septilyon");
if (i==9 && s[i]>0) printf (" oktilyon");
if (i==10 && s[i]>0) printf (" nobilyon");
if (i==11 && s[i]>0) printf (" desilyon");
}
printf (".\n");
} -
Pointer görmediysen bu da pointersız:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>int main(void)
{
char s_sayi[36];
int s[12], c[3], i, b, counter=-1, slen;
bool binstate;
system ("COLOR F0");
printf ("Bu program girdiginiz bir tamsayinin okunusunu verir.\n");
input:
for (i=0; i<12; i++) s[i]=0;
counter=-1;
printf ("\nSayi: ");
gets (s_sayi);
slen=strlen(s_sayi);
for (i=0; i<slen; i++)
{
if (i%3==0) counter++;switch (s_sayi[slen-i-1])
{
case '0': b=0; break;
case '1': b=1; break;
case '2': b=2; break;
case '3': b=3; break;
case '4': b=4; break;
case '5': b=5; break;
case '6': b=6; break;
case '7': b=7; break;
case '8': b=8; break;
case '9': b=9; break;
default: printf ("\nGirdiginiz sayida rakam harici karakter olup olmadigini kontrol edip tekrar deneyin.\n"); goto input; break;
}if (i%3==0) s[counter]+=b;
if (i%3==1) s[counter]+=b*10;
if (i%3==2) s[counter]+=b*100;}
printf ("\nOkunusu:");for (i=counter; i>=0; i--)
{
binstate=true;
c[0]=s[i]%10;
c[1]=(s[i]/10)%10;
c[2]=s[i]/100;
if (c[2]!=0)
{
if (c[2]==2) printf (" iki");
if (c[2]==3) printf (" uc");
if (c[2]==4) printf (" dort");
if (c[2]==5) printf (" bes");
if (c[2]==6) printf (" alti");
if (c[2]==7) printf (" yedi");
if (c[2]==8) printf (" sekiz");
if (c[2]==9) printf (" dokuz");
printf (" yuz");
}
if (c[1]!=0)
{
if (c[1]==1) printf (" on");
if (c[1]==2) printf (" yirmi");
if (c[1]==3) printf (" otuz");
if (c[1]==4) printf (" kirk");
if (c[1]==5) printf (" elli");
if (c[1]==6) printf (" atmis");
if (c[1]==7) printf (" yetmis");
if (c[1]==8) printf (" seksen");
if (c[1]==9) printf (" doksan");
}if (i==1 && s[1]==1) binstate=false;
if (c[0]!=0)
{
if (c[0]==1 && binstate==true) printf (" bir");
if (c[0]==2) printf (" iki");
if (c[0]==3) printf (" uc");
if (c[0]==4) printf (" dort");
if (c[0]==5) printf (" bes");
if (c[0]==6) printf (" alti");
if (c[0]==7) printf (" yedi");
if (c[0]==8) printf (" sekiz");
if (c[0]==9) printf (" dokuz");
}
if (i==1 && s[i]>0) printf (" bin");
if (i==2 && s[i]>0) printf (" milyon");
if (i==3 && s[i]>0) printf (" milyar");
if (i==4 && s[i]>0) printf (" trilyon");
if (i==5 && s[i]>0) printf (" katrilyon");
if (i==6 && s[i]>0) printf (" kentrilyon");
if (i==7 && s[i]>0) printf (" seksilyon");
if (i==8 && s[i]>0) printf (" septilyon");
if (i==9 && s[i]>0) printf (" oktilyon");
if (i==10 && s[i]>0) printf (" nobilyon");
if (i==11 && s[i]>0) printf (" desilyon");
}
printf (".\n\n");
system ("PAUSE");
return 0;
} -
c# kodu değil bunlar.. arkadaşın çevirmesi gerekecek. ayrıca ilk mesajımda söylediğim gibi bu yöntem biraz daha amatöre kaçıyor sayıyı böldürmek falan.. gerçi bilmiyorum arkadaşın yapmak istediği ne, ödev mi yoksa öğrenmek mi istiyor ...
-
Kodun %90'ı algoritma zaten çevirmek zor olmasa gerek.
-
verilen cevapları inceliycem saolun şuan yaz okulundayım %10 etkili 3 ödevin birincisi bu puan toplamam lazım öğrenmem de gerekiyor elbet kafama takılan bişe olursa yazarım tekrar
