Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 27 kết quả

Đề tài: Viết chương trình nhập 1 số nguyên, xuất ra dạng chữ!

  1. #1
    No Avatar
    Diệp Thiên Kỳ Khách

    Post Viết chương trình nhập 1 số nguyên, xuất ra dạng chữ!

    Vừa qua, mình nhận được một số bài tập rèn luyện kỹ năng nhập, xuất và sử dụng các hàm căn bản. Trong đó có một bài hơi gai đối với mình, đề như sau:
    -Viết chương trình nhập vào một số nguyên gồm 4 chữ số, xuất ra màn hình dưới dạng chữ.
    VD: 1234 ----> Một nghìn hai trăm ba mươi bốn

    Mình đã thử mày mò một số cách làm trên mạng nhưng hầu như không thấy, có thì cũng là 1 đề tương tự và không có lời giải. Nay mình mong các bạn, ai có thể giải đáp vấn đề này, giúp mình một chút nhé. Cám ơn các bạn rất nhiều

  2. #2
    Ngày gia nhập
    05 2009
    Nơi ở
    Hà Nội
    Bài viết
    182

    Trích dẫn Nguyên bản được gửi bởi Diệp Thiên Kỳ Xem bài viết
    Vừa qua, mình nhận được một số bài tập rèn luyện kỹ năng nhập, xuất và sử dụng các hàm căn bản. Trong đó có một bài hơi gai đối với mình, đề như sau:
    -Viết chương trình nhập vào một số nguyên gồm 4 chữ số, xuất ra màn hình dưới dạng chữ.
    VD: 1234 ----> Một nghìn hai trăm ba mươi bốn

    Mình đã thử mày mò một số cách làm trên mạng nhưng hầu như không thấy, có thì cũng là 1 đề tương tự và không có lời giải. Nay mình mong các bạn, ai có thể giải đáp vấn đề này, giúp mình một chút nhé. Cám ơn các bạn rất nhiều
    bài này không khó đâu bạn ạ ,nếu không làm được ngay bạn có thể làm 1 cách đơn giản là làm với số hàng trăm trước, nếu với hàng trăm vẫn thấy khó thì với số hàng chục, chứ bọn mình làm giúp bạn thì chả nói làm gì, bạn tự làm rồi sai chỗ nào đưa lên mọi người sửa cho
    mình gợi ý với số 322 nhé :
    - (tìm ra số đầu đọc tên số đầu ) 322:100 =if(3>0) thêm chữ "trăm"
    - (tìm ra số thứ 2 đọc tên số thứ 2((322-3x100)/10 )) và 322:(3x10)=if(1.04>0) thêm chữ "mươi"
    - cuối cùng tìm ra số cuối cùng đọc tên nốt

  3. #3
    Ngày gia nhập
    08 2009
    Bài viết
    2

    Bài này cũng đơn giản mà, mình post đoạn code mình làm bạn đọc tham khảo thì có thể tự code được, mà hình như trong 4rum cũng có rồi thì phải.

    Code:
    #include <stdio>
    #include <conio>
    
    //doc so o hang tram nghin
    unsigned int tramnghin(x)
    {
        switch(x){
            case 1:
                printf("Mot Tram");
                break;
            case 2:
                printf("Hai Tram");
                break;
            case 3:
                printf("Ba Tram");
                break;
            case 4:
                printf("Bon Tram");
                break;
            case 5:
                printf("Nam Tram");
                break;
            case 6:
                printf("Sau Tram");
                break;
            case 7:
                printf("Bay Tram");
                break;
            case 8:
                printf("Tam Tram");
                break;
            case 9:
                printf("Chin Tram");
                break;
        }
    }
    
    //doc so o hang chuc nghin
    unsigned int chucnghin(x)
    {
        switch(x){
            case 1:
                printf("Muoi");
                break;
            case 2:
                printf("Hai Muoi");
                break;
            case 3:
                printf("Ba Muoi");
                break;
            case 4:
                printf("Bon Muoi");
                break;
            case 5:
                printf("Nam Muoi");
                break;
            case 6:
                printf("Sau Muoi");
                break;
            case 7:
                printf("Bay Muoi");
                break;
            case 8:
                printf("Tam Muoi");
                break;
            case 9:
                printf("Chin Muoi");
                break;
            case 0:
                printf("Linh");
                break;
        }
    }
    
    //doc so o hang nghin
    unsigned int nghin(x)
    {
        switch(x){
            case 1:
                printf("Mot Nghin");
                break;
            case 2:
                printf("Hai Nghin");
                break;
            case 3:
                printf("Ba Nghin");
                break;
            case 4:
                printf("Bon Nghin");
                break;
            case 5:
                printf("Nam Nghin");
                break;
            case 6:
                printf("Sau Nghin");
                break;
            case 7:
                printf("Bay Nghin");
                break;
            case 8:
                printf("Tam Nghin");
                break;
            case 9:
                printf("Chin Nghin");
                break;
        }
    }
    
    //doc so o hang tram
    unsigned int tram(x)
    {
        switch(x){
            case 0:
                printf("Khong Tram");
                break;
            case 1:
                printf("Mot Tram");
                break;
            case 2:
                printf("Hai Tram");
                break;
            case 3:
                printf("Ba Tram");
                break;
            case 4:
                printf("Bon Tram");
                break;
            case 5:
                printf("Nam Tram");
                break;
            case 6:
                printf("Sau Tram");
                break;
            case 7:
                printf("Bay Tram");
                break;
            case 8:
                printf("Tam Tram");
                break;
            case 9:
                printf("Chin Tram");
                break;
        }
    }
    
    //doc so o hang chuc
    unsigned int chuc(x)
    {
        switch(x){
            case 0:
                printf("ling");
                break;
            case 1:
                printf("Muoi");
                break;
            case 2:
                printf("Hai Muoi");
                break;
            case 3:
                printf("Ba Muoi");
                break;
            case 4:
                printf("Bon Muoi");
                break;
            case 5:
                printf("Nam Muoi");
                break;
            case 6:
                printf("Sau Muoi");
                break;
            case 7:
                printf("Bay Muoi");
                break;
            case 8:
                printf("Tam Muoi");
                break;
            case 9:
                printf("Chin Muoi");
                break;
        }
    }
    
    //doc so o hang don vi
    unsigned int donvi(x)
    {
        switch(x){
            case 0:
                printf("Khong");
                break;
            case 1:
                printf("Mot");
                break;
            case 2:
                printf("Hai");
                break;
            case 3:
                printf("Ba");
                break;
            case 4:
                printf("Tu");
                break;
            case 5:
                printf("Nam");
                break;
            case 6:
                printf("Sau");
                break;
            case 7:
                printf("Bay");
                break;
            case 8:
                printf("Tam");
                break;
            case 9:
                printf("Chin");
                break;
        }
    }
    
    /** Chap vao 1 so co co 1,2 hay nhieu chu so va <100.000 va doc so vua nhap vao **/
    
    void main()
    {
        int n;
        printf("\nNhap vao so tu 0 -> 999.999 :");
        scanf("%d",&n);
    
        //Tach cac so lan luot o hang tram nghin, chuc nhin, hang nghin, hang tram, hang chuc, hang don vi
        int tng=n/100000;
        int cng=(n/10000)%10;
        int ng=(n/1000)%10;
        int t=(n/100)%10;
        int c=(n/10)%10;
        int dv=n%10;
    
        //Doc cac so vua tach o tren
        printf("\nDoc: ");
    
        tramnghin(tng); printf(" ");
        chucnghin(cng); printf(" ");
        nghin(ng);      printf(" ");
        tram(t);        printf(" ");
        chuc(c);        printf(" ");
        donvi(dv);      printf(" ");
    }

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

    bài này quá dài, nếu trường hợp nó dài tới 10 chữ số thì không biết dài thế nào nữa

  5. #5
    Ngày gia nhập
    02 2012
    Nơi ở
    everywhere
    Bài viết
    13

    %10 ra rồi xem nó ở hàng ngàn hay trăm rồi gọi switch

  6. #6
    Ngày gia nhập
    01 2012
    Nơi ở
    hà nôi 2
    Bài viết
    59

    Mặc định Viết chương trình nhập 1 số nguyên, xuất ra dạng chữ!

    %10 thì nó luôn hiện từ hàng đơn vị rồi đến các hàng khác. hơi ngược tí nhưng chủ đạo vẫn switch để in tên của các số lấy dư còn những từ trăm nghìn hay mươi thì cố định rồi
    I'm still a chicken
    rất vui khi được làm quen với mọi người ^_^ http://www.facebook.com/chung.v.nguyen.14

  7. #7
    Ngày gia nhập
    04 2010
    Bài viết
    1,537

    Trích dẫn Nguyên bản được gửi bởi khongtoan1991 Xem bài viết
    bài này quá dài, nếu trường hợp nó dài tới 10 chữ số thì không biết dài thế nào nữa
    Trích dẫn Nguyên bản được gửi bởi yokashi Xem bài viết
    %10 ra rồi xem nó ở hàng ngàn hay trăm rồi gọi switch
    Trích dẫn Nguyên bản được gửi bởi kimchung929 Xem bài viết
    %10 thì nó luôn hiện từ hàng đơn vị rồi đến các hàng khác. hơi ngược tí nhưng chủ đạo vẫn switch để in tên của các số lấy dư còn những từ trăm nghìn hay mươi thì cố định rồi
    Tại giải thuật bài này yếu. Trên nguyên tắc, tiếng Việt đọc số chỉ đến hàng trăm, lên đến hàng ngàn thì lặp lại cách đọc. Ta có thể dựa trên tính chất này để phân số ra từng đoạn 3 chữ số. Như vậy đọc số dài bao nhiêu cũng được (rất tiếc số nguyên chỉ tới hàng tỷ- 10 chữ số)

  8. #8
    Ngày gia nhập
    04 2010
    Bài viết
    1,537

    Code đây nè (đổi từ C# sang C nên có thể còn vài chỗ thiếu sót - code nguyên thủy đã thử tốt trên C#)

    C Code:
    1. // code đọc số thành chữ
    2.  
    3. #define MXLEN 64
    4.  
    5. // hàm nhận số và ghi cách đọc vào chuỗi ds
    6.  
    7.     char *DocSo(char *ds, int so)
    8.     {
    9.         char *kh [] = { "", "ngàn", "triệu", "tỷ" }; // các khoản 3 chữ số
    10.         if (so == 0)
    11.             return Doc3So(ds, so, 0);
    12.         char d3s[MXLEN]; // chuỗi để đọc 3 chữ số
    13.         int kilo = 0; // hàng ngàn
    14.         while (so > 0)
    15.         {
    16.             Doc3So(d3s, so % 1000, so / 1000);
    17.             if (strlen(ds) == 0)
    18.                 strcpy(ds, (strcmp(d3s,"không")) ? d3s : "chẵn");
    19.             else if (strcmp(d3s,"không") || strcmp(ds,"chẵn"))
    20.                 strcpy(ds, strcat(strcat(strcat(strcat(d3s, " "), kh[kilo]), " "), ds));
    21.                 // tức là ds = d3s + " " + kh[kilo] + " " + ds;
    22.             kilo++;
    23.             so /= 1000;
    24.         }
    25.         return ds;
    26.     }
    27.  
    28.     char *Doc3So(char *ds, int so, int truoc) // truoc: số có phần đi trước nó hay không
    29.     {
    30.         char *doc[] = { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" };
    31.         if (so == 0)
    32.         {
    33.             strcpy(ds, doc[0]);
    34.             return ds;
    35.         }
    36.         int donvi = so % 10;
    37.         int chuc = (so / 10) % 10;
    38.         int tram = (so / 100) % 10;
    39.         if (truoc != 0 || tram != 0)
    40.         {
    41.             strcat(strcpy(ds, doc[so / 100]), " trăm");
    42.             // tức là ds = doc[so / 100] + " trăm";
    43.             if (chuc == 0 && donvi != 0) strcat(ds, " lẻ");
    44.         }
    45.         if (chuc == 1) strcat(ds, " mười");
    46.         else if (chuc > 1) strcat(strcat(strcat(ds, " "), doc[chuc]), " mươi");
    47.                           // tức là x += " " + doc[chuc] + " mươi";
    48.         if (chuc != 0 && donvi == 5) strcat(ds, " lăm");
    49.         else if (donvi != 0) strcat(strcat(ds, " "), doc[donvi]);
    50.         return ds;
    51.     }

    (thử code C#)
    1234567890 : một tỷ hai trăm ba mươi bốn triệu năm trăm sáu mươi bảy ngàn tám trăm chín mươi
    102000 : một trăm lẻ hai ngàn chẵn

  9. #9
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    ^
    Không ổn. ~>"<~

    Attached Thumbnails Attached Thumbnails report1.png  
    Thông tin liên lạc để kết bạn:
    Skype: doicanhden
    Email: doicanhden@gmail.com
    Chú ý: KHÔNG HỖ TRỢ KĨ THUẬT.

  10. #10
    Ngày gia nhập
    12 2008
    Nơi ở
    Hà Nội
    Bài viết
    374

    Hì, em xin đóng góp chút, ngắn hơn và có lẽ hiểu quả hơn

    C++ Code:
    1.     char* ChuSo[] = { "Khong", "Mot", "Hai", "Ba", "Bon", "Nam", "Sau", "Bay", "Tam", "Chin" };
    2.     char* DonVi[] = { "Tram", "Ty" , "Muoi" , "Tram" , "Nghin" , "Muoi", "Tram" , "Trieu" , "Muoi"} ;
    3.     char* So = "123123111111111234123123"; // 123 123 111 111 111 234 123 123
    4.    
    5.     int len = strlen(So);
    6.     for (int i = 0 ; i < len ; i++)
    7.     {
    8.         char* CS = ChuSo[So[i] - 48];
    9.         char* DV = DonVi[(len - i) % 9];
    10.         if(CS == "Mot" && DV == "Muoi") // Nếu chữ số là Một và Đơn vị là Mươi
    11.             cout<<"Muoi "; // Mười
    12.         else
    13.             cout<<CS<<" "<<(i < len - 1 ? DV : "")<<" ";
    14.     }
    15.    
    16.     /*Mot Tram Hai Muoi Ba Nghin Mot Tram Hai Muoi Ba Ty Mot Tram Muoi Mot Trieu Mot T
    17.     ram Muoi Mot Nghin Mot Tram Muoi Mot Ty Hai Tram Ba Muoi Bon Trieu Mot Tram Hai
    18.     Muoi Ba Nghin Mot Tram Hai Muoi Ba*/

    Em nghĩ chuyển bài này sang box Thắc mắc CTDL & Giải thuật thì tốt hơn
    Đã được chỉnh sửa lần cuối bởi luc13aka47 : 21-09-2012 lúc 05:26 PM.

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

  1. Game Viết chương trình nhập số nguyên dương n, liệt kê n số nguyên tố đầu tiên trên C#?
    Gửi bởi maiit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 18
    Bài viết cuối: 08-06-2011, 11:12 PM
  2. Bài tập C Bài toán nhập xuất 2 số nguyên viết bằng code assembly
    Gửi bởi kidqn trong diễn đàn Thắc mắc lập trình C/C++ trên Linux
    Trả lời: 3
    Bài viết cuối: 28-04-2011, 01:56 PM
  3. Viết chương trình xuất các số nguyên tố có trên cây. Help me
    Gửi bởi blake105 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 27-11-2010, 01:40 PM
  4. Viết chương trình nhập vào mảng n số nguyên, sắp xếp mảng tăng dần. Xuất ra màn mình m
    Gửi bởi vinkt trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 31-08-2010, 05:55 AM
  5. Viết hàm tìm phần tử xuất hiện nhiều nhất trong mảng 1 chiều các số nguyên?
    Gửi bởi fire_dragon14988 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 46
    Bài viết cuối: 28-08-2010, 05:14 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