Đổi (đọc) số thành chữ trong C, C++

iThuthuat -
Đổi (đọc) số thành chữ trong C, C++
Một bài tập lập trình  tiếp theo của những bài C# trước mình gửi tới các bạn. Code đọc số thành chữ trong C, C++. Yêu cầu của bài là nhập 1 dãy số từ bàn phím, chương trình xuất ra chuỗi ký tự chữ tương ứng với con số vừa nhập.
Ví dụ:
- Nhập: 123456789
- Xuất: mot tram hai muoi ba trieu bon tram nam muoi sau nghin bay tram tam muoi chin
Đọc số thành chữ trong C
Ý tưởng: Đọc theo Block số 3 số
Cụ thể:
Code:

#include
#include
#include
void readblock3(char scr[],char result[])
{
int len=strlen(scr);
int vt=0;
char *chu[10]={" ","Mot","Hai","Ba","Bon","Nam","Sau","Bay","Tam","Chin"};


if(len==3)
{
if(scr[0]=='0')
strcat(result," Khong Tram ");
else
{
strcat(result,chu[scr[vt]-48]);
strcat(result," Tram ");
}
--len;
++vt;
}

if(len==2)
{
if(scr[vt]=='0')
{
if(scr[vt+1]!='0')
strcat(result," Le ");
}
else if(scr[vt]=='1')
strcat(result," Muoi ");
else
{
strcat(result,chu[scr[vt]-48]);
if(scr[vt+1]!='0')
strcat(result," Muoi ");
}
--len; ++vt;

}

if(len==1)
{
if(scr[vt]=='1')
strcat(result," Mot ");
else
strcat(result,chu[scr[vt]-48]);

}

}
void readall(char scr[],char result[])
{
int len=strlen(scr);
int i,j,vt=0,dv;
char *donvi[4]={""," Ngan "," Trieu "," Ti "};
char tmp[200];

if(len%3==0)
dv=len/3-1;
else
dv=len/3;

if(len%3!=0)
{
for(j=0;jtmp[j]=scr[vt++];
tmp[j]=NULL;
readblock3(tmp,result);
strcat(result,donvi[dv]);
--dv;
}


for(i=0;i{
for(j=0;j<3;++j)
tmp[j]=scr[vt++];
tmp[j]=NULL;
readblock3(tmp,result);
strcat(result,donvi[dv]);
--dv;

}
}
void main()
{
char chuoi[255];
char result[255];
strcpy(result,"");
printf("Nhap Mot Chuoi So:");
scanf("%s",chuoi);
readall(chuoi,result);
printf("%s%s","\nChuoi Sau Khi Doi:\n",result);
getch();
}

Chúc các bạn học tập tốt !

0 comments: