Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Mã nguồn C | Chuyển số thành chữ trong C

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Mặc định Mã nguồn C | Chuyển số thành chữ trong C

    Chuyển số thành chữ

    C Code:
    1. #include <stdio.h>
    2. #include <conio.h>
    3.  
    4. char s[100] = "";
    5. char *tripkey(unsigned int n )
    6. {
    7.    char numword[10][5] = {"","mot","hai","ba","bon","nam","sau","bay","tam","chin");
    8.    int donvi, chuc, tram;
    9.  
    10.     s[0];
    11.     donvi = n % 10;
    12.     n /= 10;
    13.     chuc = n% 10;
    14.     tram = n/ 10;
    15.  
    16.     if ( tram > 0 )
    17.     {
    18.         strcat(s,numword[tram]);
    19.         strcat(s,"tram");;
    20.     }
    21.     if ( chuc > 0 )
    22.     {
    23.         if ( chuc == 1)
    24.             strcat(s,"muoi");
    25.         else
    26.         {
    27.             strcat(s,numword[chuc]);
    28.             strcat(s,"muoi");
    29.         }
    30.     }
    31.     if ( donvi > 0 )
    32.     {
    33.         if ( chuc == 0 && tram !- 0 ) strcat(s,"le");
    34.        
    35.         if ( donvi == 1 ) strcat(s,"mot");
    36.         else if ( donvi == 5 && ( chuc != 0 || tram != 0 )) strcat(s,"lam");
    37.         else if ( donvi == 5 && ( chuc = 0 || tram != 0 )) strcat(s,"nam");
    38.         else strcat(s,numword[donvi]);
    39.     }
    40.     return s;
    41. }
    42.  
    43. int main(void)
    44. {
    45.     unsigned long n;
    46.     unsigned ngan, trieu, ty, donvi;
    47.     char chuoi[1000];
    48.  
    49.     printf("\n Nhap so : ");
    50.     scanf("%ld",&n);
    51.     printf("\n doc la :");
    52.  
    53.     if ( n == 0 )
    54.     printf("\n khong ");
    55.     else
    56.     {
    57.         donvi = n % 1000;
    58.         n/=1000;
    59.         ngan = n%1000;
    60.         n/=1000;
    61.         trieu=n%1000;
    62.         ty=n/1000;
    63.  
    64.         chuoi[0]=0;
    65.         if (ty>0) printf(" %s ty ",tripkey[ty]);
    66.         if (trieu>0) printf(" %s trieu ",tripkey[trieu]);
    67.         if (ngan>0) printf(" %s ngan ",tripkey[ngan]);
    68.         if (donvi>0) printf(" %s ",tripkey[donvi]);
    69.     }
    70.     getch();
    71.     return 0;
    72. }
    None!

  2. #2
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    Smile Đây là bài viết của mình về chuyển số thành chữ trong c!

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. #include<string.h>
    5. #define MAX 12
    6. #define ENTER 13
    7. int nhapSo(char so[])
    8. {
    9.      int i=0;
    10.      printf("Nhap vao 1 so, go ENTER de ket thuc: ");
    11.      so[i]=getch();printf("%c",so[i]);
    12.      i++;
    13.      while(so[0]!=48)
    14.      {
    15.         do{
    16.            so[i]=getch();
    17.            if(so[i]==ENTER){
    18.                             so[i]='\0';
    19.                             return i;
    20.            }
    21.         }
    22.         while((so[i]<48)||(so[i]>57));
    23.         printf("%c",so[i]);
    24.         i++;
    25.         if(i>=MAX)break;
    26.      }
    27.      so[i]='\0';
    28.      return i;
    29. }
    30. void docSo(char a)
    31. {
    32.      char *s[]={"khong","mot","hai","ba","bon","nam","sau","bay","tam","chin"};
    33.      printf(s[a-48]);
    34.      return;
    35. }
    36. void docSo(char a,char b)
    37. {
    38.      char *s[]={"khong","mot","hai","ba","bon","nam","sau","bay","tam","chin"};
    39.      if(a==49)
    40.      {
    41.                 if(b==48) puts("muoi");
    42.                 else{
    43.                      printf("muoi %s",s[b-48]);
    44.                 }
    45.      }
    46.      else{
    47.           if(b==48) printf("%s muoi",s[a-48]);
    48.           else{
    49.           printf("%s muoi %s",s[a-48],s[b-48]);
    50.           }
    51.      }
    52. }
    53. void docSo(int a,int b,int c)
    54. {
    55.      char *s[]={"khong","mot","hai","ba","bon","nam","sau","bay","tam","chin"};
    56.      char *s1[]={"linh","muoi","tram"};
    57.      if(b==48&&c==48) printf("%s tram",s[a-48]);
    58.      else{
    59.           if(b==48) printf("%s tram linh %s",s[a-48],s[c-48]);
    60.           else{printf("%s tram ",s[a-48]); docSo(b,c);
    61.           }
    62.      }
    63. }
    64. void docSo(char a[])
    65. {
    66.      switch(strlen(a))
    67.      {
    68.               case 1 :
    69.                    docSo(a[0]);
    70.                    break;
    71.               case 2 :
    72.                    docSo(a[0],a[1]);
    73.                    break;
    74.               case 3 :
    75.                    docSo(a[0],a[1],a[2]);
    76.                    break;
    77.               case 4 :
    78.                    docSo(a[0]);
    79.                    printf(" nghin ");
    80.                    docSo(a[1],a[2],a[3]);
    81.                    break;
    82.               case 5 :
    83.                    docSo(a[0],a[1]);
    84.                    printf(" nghin ");
    85.                    docSo(a[2],a[3],a[4]);
    86.                    break;
    87.               case 6 :
    88.                    docSo(a[0],a[1],a[2]);
    89.                    printf(" nghin ");
    90.                    docSo(a[3],a[4],a[5]);
    91.                    break;
    92.               case 7 :
    93.                    docSo(a[0]);
    94.                    printf(" trieu ");
    95.                    docSo(a[1],a[2],a[3]);
    96.                    printf(" nghin ");
    97.                    docSo(a[4],a[5],a[6]);
    98.                    break;
    99.               case 8 :
    100.                    docSo(a[0],a[1]);
    101.                    printf(" trieu ");
    102.                    docSo(a[2],a[3],a[4]);
    103.                    printf(" nghin ");
    104.                    docSo(a[5],a[6],a[7]);
    105.                    break;
    106.               case 9 :
    107.                    docSo(a[0],a[1],a[2]);
    108.                    printf(" trieu ");
    109.                    docSo(a[3],a[4],a[5]);
    110.                    printf(" nghin ");
    111.                    docSo(a[6],a[7],a[8]);
    112.                    break;
    113.               case 10 :
    114.                    docSo(a[0]);
    115.                    printf(" ti ");
    116.                    docSo(a[1],a[2],a[3]);
    117.                    printf(" trieu ");
    118.                    docSo(a[4],a[5],a[6]);
    119.                    printf(" nghin ");
    120.                    docSo(a[7],a[8],a[9]);
    121.                    break;
    122.               case 11 :
    123.                    docSo(a[0],a[1]);
    124.                    printf(" ti ");
    125.                    docSo(a[2],a[3],a[4]);
    126.                    printf(" trieu ");
    127.                    docSo(a[5],a[6],a[7]);
    128.                    printf(" nghin ");
    129.                    docSo(a[8],a[9],a[10]);
    130.                    break;
    131.               case 12 :
    132.                    docSo(a[0],a[1],a[2]);
    133.                    printf(" ti ");
    134.                    docSo(a[3],a[4],a[5]);
    135.                    printf(" trieu ");
    136.                    docSo(a[6],a[7],a[8]);
    137.                    printf(" nghin ");
    138.                    docSo(a[9],a[10],a[11]);
    139.                    break;
    140.      }
    141. }
    142. int main()
    143. {
    144.     char a[MAX];
    145.     int n=nhapSo(a);
    146.     printf("\nKet qua:\n");
    147.     docSo(a);
    148.     getch();
    149. }
    Đã được chỉnh sửa lần cuối bởi kienquach : 07-03-2013 lúc 02:10 AM.
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

  3. #3
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    Mặc định hihi. 1 bài nữa nè.

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. #define MAX 20
    5. #define ENTER 13
    6.  
    7. int nhapSo(char so[])
    8. {
    9.      int i=0;
    10.      printf("Nhap vao 1 so, go ENTER de ket thuc: ");
    11.      so[i]=getch();printf("%c",so[i]);
    12.      i++;
    13.      while(so[0]!=48)
    14.      {
    15.         do{
    16.            so[i]=getch();
    17.            if(so[i]==ENTER){
    18.                             so[i]='\0';
    19.                             return i;
    20.            }
    21.         }
    22.         while((so[i]<48)||(so[i]>57));
    23.         printf("%c",so[i]);
    24.         i++;
    25.         if(i>=MAX)break;
    26.      }
    27.      so[i]='\0';
    28.      return i;
    29. }
    30. void inSo(char so[])
    31. {
    32.      if(so[0]>=48&&so[0]<=57){
    33.                      printf("\n\nSo vua nhap la: ");
    34.                      printf(so);
    35.                      printf("\n\n");
    36.      }
    37.      else printf("\nban chua nhap so nao!\n");
    38. }
    39. void docSo(char s[],char a)
    40. {
    41.      char *chuSo[]={"khong","mot","hai","ba","bon","nam","sau","bay","tam","chin"};
    42.      if(a>=48&&a<=57)
    43.      strcpy(s,chuSo[a-48]);
    44.      else s[0]='\0';
    45. }
    46. void docSo1(char s[10],char a,char b)
    47. {
    48.      char *chuSo[]={"khong ","mot ","hai ","ba ","bon ","nam ","sau","bay ","tam ","chin ","muoi "};
    49.      char s2[10];
    50.      if(a>=48&&a<=57&&b>=48&&b<=57)
    51.      switch(a)
    52.      {
    53.               case 48:strcpy(s,chuSo[b-48]);break;
    54.               case 49:
    55.                    switch(b)
    56.                    {
    57.                             case 48:strcpy(s,chuSo[10]);break;
    58.                             default:strcpy(s,chuSo[10]);strcpy(s2,chuSo[b-48]);strcat(s,s2); break;
    59.                    }
    60.                    break;
    61.               default:
    62.                    switch(b)
    63.                    {
    64.                             case 48:strcpy(s2,chuSo[10]);strcpy(s,chuSo[a-48]);strcat(s,s2); break;
    65.                             default:strcpy(s,chuSo[a-48]);strcat(s," muoi ");strcpy(s2,chuSo[b-48]);strcat(s,s2); break;
    66.                    }
    67.                    break;
    68.              
    69.      }
    70.      else s[0]='\0';
    71. }
    72. void docSo2(char s[],char a,char b,char c)
    73. {
    74.      char *chuSo[]={"khong ","mot ","hai ","ba ","bon ","nam ","sau","bay ","tam ","chin ","muoi "};
    75.      char *tram[]={" tram "," linh "};
    76.      char s1[10];
    77.      if(a>=48&&a<=57&&b>=48&&b<=57&&c>=48&&c<=57)
    78.      switch(a)
    79.      {
    80.               case 48:
    81.                    switch(b)
    82.                    {
    83.                             case 48:strcpy(s,chuSo[0]);strcat(s,tram[0]);strcat(s,tram[1]);strcat(s,chuSo[c-48]);break;
    84.                             default:strcpy(s,chuSo[0]);strcat(s,tram[0]);docSo1(s1,b,c);strcat(s,s1);break;
    85.                    }
    86.                    break;
    87.               default:
    88.                       switch(b)
    89.                       {
    90.                                case 48:
    91.                                     switch(c)
    92.                                     {
    93.                                              case 48:strcpy(s,chuSo[a-48]);strcat(s,tram[0]);break;
    94.                                              default:strcpy(s,chuSo[a-48]);strcat(s,tram[0]);strcat(s,tram[1]);strcat(s,chuSo[c-48]);break;
    95.                                     }
    96.                                     break;
    97.                                default:strcpy(s,chuSo[a-48]);strcat(s,tram[0]);docSo1(s1,b,c);strcat(s,s1);break;
    98.                       }
    99.                       break;
    100.      }
    101.      else s[0]='\0';
    102. }
    103. void xuLyDocSo(char s[],char so[])
    104. {
    105.      int i=strlen(so)-1,j=2,k=0;
    106.      char luu[100][100];
    107.      char *hang[]={" ti "," trieu "," nghin "};
    108.      char s1[50];
    109.      while(i>2)
    110.      {
    111.                strcpy(luu[k],hang[j]);
    112.                docSo2(s1,so[i-2],so[i-1],so[i]);
    113.                strcat(luu[k],s1);
    114.                if(i>2)
    115.                i=i-3;
    116.                else break;
    117.                k++;
    118.                j--;
    119.                if(j<0)j=2;            
    120.      }
    121.      if(i==2)docSo2(s,so[0],so[1],so[2]);
    122.      else {if(i==1)docSo1(s,so[0],so[1]);
    123.      else docSo(s,so[0]);
    124.      }
    125.      if(k>=1)
    126.      for(i=k-1;i>=0;i--)
    127.      strcat(s,luu[i]);    
    128. }
    129. int main()
    130. {
    131.     char so[MAX];
    132.     nhapSo(so);
    133.     inSo(so);
    134.     char s[100];
    135.     xuLyDocSo(s,so);
    136.     puts(s);
    137.     getch();
    138.     return 0;
    139. }
    Đã được chỉnh sửa lần cuối bởi kienquach : 07-03-2013 lúc 02:12 AM.
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

  4. #4
    Ngày gia nhập
    11 2012
    Bài viết
    1

    Mặc định Chuyển số thành chữ trong văn bản

    Code bạn viết hay quá , nhưng mình có 1 vấn đề thế này : chuyển số thành chữ trong 1 đoạn văn bản
    Mình nhập vào 1 đoạn văn bản gồm cả số ,chữ ,ký tự đặc biệt ,sau đó kiểm tra từ đầu đến cuối xem ký tự nào là số ( trong khoảng 48 đến 57 ) thì sẽ chuyển sang hàm đọc số của bạn kienquach nhưng nó chỉ đọc từng số 1
    VD : em cau 13 con ca trong 3 tieng
    -> em cau mot ba con ca trong ba tieng
    trong khi mình muốn hiện : em cau muoi ba con ca trong ba tieng

  5. #5
    Ngày gia nhập
    02 2012
    Nơi ở
    hà nội
    Bài viết
    58

    Talking

    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<string.h>
    4. #include<stdlib.h>
    5. #define MAX 20
    6. #define ENTER 13
    7.  
    8. int nhapSo(char so[])
    9. {
    10.      int i=0;
    11.      printf("Nhap vao 1 so, go ENTER de ket thuc: ");
    12.      so[i]=getch();printf("%c",so[i]);
    13.      i++;
    14.      while(so[0]!=48)
    15.      {
    16.         do{
    17.            so[i]=getch();
    18.            if(so[i]==ENTER){
    19.                             so[i]='\0';
    20.                             return i;
    21.            }
    22.         }
    23.         while((so[i]<48)||(so[i]>57));
    24.         printf("%c",so[i]);
    25.         i++;
    26.         if(i>=MAX)break;
    27.      }
    28.      so[i]='\0';
    29.      return i;
    30. }
    31. void inSo(char so[])
    32. {
    33.      if(so[0]>=48&&so[0]<=57){
    34.                      printf("\n\nSo vua nhap la: ");
    35.                      printf(so);
    36.                      printf("\n\n");
    37.      }
    38.      else printf("\nban chua nhap so nao!\n");
    39.      return;
    40. }
    41. //1123456709
    42. //mot ti mot tram hai muoi ba trieu bon tram nam muoi sau nghin bay tram linh chin
    43. //1a,2a,3,a,4a,5a,6,a,7a,8a,9
    44. void xuLyDocSo(char s[],char so[],int n)
    45. {
    46.      char *chuSo[]={"khong","mot","hai","ba","bon","nam","sau","bay","tam","chin"};
    47.      int i;
    48.      if(n==1)
    49.      {
    50.              strcat(s,chuSo[so[n-1]-48]);
    51.              return;
    52.      }
    53.      int k=0,j=1,dem;
    54.      char luu[30][30];
    55.      char *hang[]={""," nghin "," trieu "," ti "};
    56.      for(i=n-1;i>=0;i-=3)
    57.      {
    58.                                  if(so[i]!='0')
    59.                                  {
    60.                                       strcpy(luu[k],chuSo[so[i]-48]);
    61.                                       k++;
    62.                                  }
    63.                                  if(i-1>=0)
    64.                                  {
    65.                                            if(so[i-1]=='0'&&so[i]!='0')
    66.                                            {
    67.                                                     strcpy(luu[k],"linh ");
    68.                                                     k++;
    69.                                            }
    70.                                           else{
    71.                                                if(so[i-1]=='1')
    72.                                                {
    73.                                                     strcpy(luu[k],"muoi ");
    74.                                                     k++;
    75.                                                }
    76.                                                else{
    77.                                                     if(so[i-1]>49){
    78.                                                     strcpy(luu[k],chuSo[so[i-1]-48]);
    79.                                                     strcat(luu[k]," muoi ");
    80.                                                     k++;
    81.                                                     }
    82.                                                }
    83.                                           }
    84.                                           if(i-2>=0)
    85.                                           {
    86.                                                   strcpy(luu[k],chuSo[so[i-2]-48]);
    87.                                                   strcat(luu[k]," tram ");
    88.                                                   k++;
    89.                                           }
    90.                                  }
    91.                                  else break;
    92.                                  if(j>3) j=1;
    93.                                  if(i-2>0){strcpy(luu[k],hang[j]);
    94.                                  k++;
    95.                                  j++;
    96.                                  }
    97.      }
    98.      for(i=k-1;i>=0;i--)
    99.      strcat(s,luu[i]);
    100.      return;
    101. }
    102. int main()
    103. {
    104.     char so[MAX];
    105.     char s[100];
    106.     int n=nhapSo(so);
    107.     inSo(so);
    108.     //printf("\nn=%d,%d\n",n,strlen(so));
    109.     xuLyDocSo(s,so,n);
    110.     printf(s);
    111.     getch();
    112.     return 0;
    113. }
    Đã được chỉnh sửa lần cuối bởi kienquach : 12-03-2013 lúc 09:51 AM.
    + Quách Việt Kiên
    + Yahoo: Kaka_8x_vn
    + skype: kiencuongno1
    + Gmail: kiencuongno1@gmail.com
    Ai có thể free cho mình 50k thẻ điện thoại ko.

  6. #6
    Ngày gia nhập
    02 2013
    Bài viết
    1

    Mặc định Mã nguồn C | Chuyển số thành chữ trong C

    giúp mình đưa vào lớp với

Các đề tài tương tự

  1. Tài liệu tối ưu hóa mã nguồn, tinh chỉnh mã nguồn (code Tuning)?
    Gửi bởi sunshine trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 19-04-2013, 09:13 AM
  2. Bài tập đồ họa trong C#, bao gồm cả mã nguồn
    Gửi bởi hieurau trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 11
    Bài viết cuối: 02-09-2012, 11:45 PM
  3. Mã nguồn C# | Cấp số Xe 9 điểm trong C#
    Gửi bởi huutu289 trong diễn đàn Dự án & Source code C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 12-09-2010, 11:14 PM
  4. Mã nguồn C | Chương trình chuyển code Pascal sang C
    Gửi bởi sieuphuong trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 12
    Bài viết cuối: 31-10-2008, 10:27 PM
  5. Chuyển file dll ra mã nguồn
    Gửi bởi vietthanhpro trong diễn đàn Thắc mắc chung
    Trả lời: 2
    Bài viết cuối: 18-03-2008, 11:35 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn