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

Đề tài: Chương trình đọc số ra chữ- hỏi một số hàm

  1. #1
    Ngày gia nhập
    01 2008
    Bài viết
    18

    Mặc định Chương trình đọc số ra chữ- hỏi một số hàm

    code này sao toàn cấu trúc lạ thế nhỉ,chương trình đọc số tự nhiên ấy mà,chạy đúng nhưng mà ko hiểu hàm lắm,anh em giúp tớ cái
    Code:
    #include <stdio.h>
    
    char s[50] = "";
    
    char *bachuso(unsigned int n)
    {
      char kyso[10][5]= {"", "mot", "hai", "ba", "bon", "nam", "sau",
                        "bay", "tam", "chin"};
      int donvi, chuc, tram;
    
      s[0] = 0;
      donvi = n % 10;
      n /= 10;
      chuc = n % 10;
      tram = n / 10;
      if (tram > 0)
      {
        strcat(s, kyso[tram]);
        strcat(s, " tram ");
      }
      if (chuc > 0)
      {
        if (chuc == 1)
           strcat(s, "muoi ");
        else
        {
           strcat(s, kyso[chuc]);
           strcat(s, " muoi ");
        }
      }
      if (donvi > 0)
      {
         if (chuc == 0 && tram != 0)
           strcat(s, "le ");
         if (donvi == 1)
           strcat(s, "mot");
         else if (donvi == 5 && (chuc != 0 || tram != 0))
           strcat(s, "lam");
         else if (donvi == 5 && (chuc = 0 || tram != 0))
           strcat(s, "nam");
         else
           strcat(s, kyso[donvi]);
      }
      return s;
    }
    
    void main()
    {
      unsigned long n;
      unsigned ngan, trieu, ty, donvi;
      char chuoi[200];
    
      printf("\nNhap mot so khong dau : ");
      scanf("%ld", &n);
      printf("So %ld doc bang chu la :\n", n);
      if (n == 0)
        printf("khong");
      else
      {
         donvi = n % 1000;
         n /= 1000;
         ngan = n % 1000;
         n /= 1000;
         trieu = n % 1000;
         ty = n / 1000;
         chuoi[0] = 0;
         if (ty > 0)
           printf("%s ty ", bachuso(ty));
         if (trieu > 0)
           printf("%s trieu ", bachuso(trieu));
         if (ngan > 0)
           printf("%s ngan ", bachuso(ngan));
         if (donvi > 0)
           printf("%s", bachuso(donvi));
      }
    
      getch();
    }
    cái char s[50] = ""; để làm gì nhỉ?mà sao nó lại khai báo lạ thế thêm mấy cái "" loạn lên,mấy anh thử nói xem nào?

    với cả khai báo này như thế nào,sao lại dùng cú pháp lạ thế char kyso[10][5]= {"", "mot", "hai", "ba", "bon", "nam", "sau",
    "bay", "tam", "chin"};

  2. #2
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Bạn nên học lại từ những cái cơ bản đi. Những điều bạn hỏi đều là cơ bản của C++ cả.

    Chúc may mắn.
    Keep moving forward!

    ... Retired ...

  3. #3
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    cái char s[50] = ""; để làm gì nhỉ?mà sao nó lại khai báo lạ thế thêm mấy cái "" loạn lên,mấy anh thử nói xem nào?
    Vậy thì bỏ nó thử xem coi nó ra cái gì ? Vọc thì chưa vọc mà cứ la ùm lên
    với cả khai báo này như thế nào,sao lại dùng cú pháp lạ thế char kyso[10][5]= {"", "mot", "hai", "ba", "bon", "nam", "sau",
    "bay", "tam", "chin"};
    Thế thì in nó ra xem nó lạ chỗ nào ?
    PHP Code:
    #include <cstring>
    #include <stdio.h>

    int main()
    {
      
    char _chuSo[10][5] = {"""mot""hai""ba""bon""nam""sau",
                                
    "bay""tam""chin"};
      for(
    int x 010; ++x)
      {
        
    printf("%d"sizeof(_chuSo[x]));
        
    printf("\n");
      }

      for(
    int x 010; ++x)
      {
        
    printf("%s"_chuSo[x]);
        
    printf("\n");
      }

    Đọc kĩ lại nghiềm ngẫm thêm tí xem sao .
    PHP Code:
    #include <stdio.h>
    #include <cstring>
    #include <iostream>

    char *TraVeBaChuSo(unsigned int conSo)
    {
      static 
    char sString[50];
      
    char _chuSo[10][5] = {"""mot""hai""ba""bon""nam""sau",
                                  
    "bay""tam""chin"};
     
      
    int _hangDonvi_hangChuc_hangTram;

      
    sString[0] = 0;
                                
      
    _hangDonvi conSo 10;
      
    conSo /= 10;
                                
      
    _hangChuc conSo 10;
      
    _hangTram conSo 10;
      
      if(
    _hangTram 0)
      {
        
    strcat(sString_chuSo[_hangTram]);
        
    strcat(sString" tram ");
      }
      
      if(
    _hangChuc 0)
      {
        if(
    _hangChuc == 1)
          
    strcat(sString"muoi ");
        else
        {
          
    strcat(sString_chuSo[_hangChuc]);
          
    strcat(sString" muoi ");
        }
      }
      
      if(
    _hangDonvi 0)
      {
        if(
    _hangChuc == && _hangTram != 0)
          
    strcat(sString"le");
        
        if(
    _hangDonvi == 1)
          
    strcat(sString"mot");
        
        else if(
    _hangDonvi == && (_hangChuc != || _hangTram != 0))
          
    strcat(sString"lam");
        
        else if(
    _hangDonvi == && (_hangChuc || _hangTram != 0))
          
    strcat(sString"nam");
        
        else
          
    strcat(sString_chuSo[_hangDonvi]);
      }
      return 
    sString;
    }

    int main()
    {
      
    unsigned long soKhongDau;
      
    unsigned _hangNgan
               
    _hangTrieu
               
    _hangTy
               
    _hangDonvi;

      
    char _mChuoiCacSo[200];

      
    printf("\nNhap mot so khong dau : ");
      
    scanf("%ld", &soKhongDau);
      
    printf("So %ld doc bang chu la :\n"soKhongDau);

      if(
    soKhongDau == 0)
        
    printf("khong");
      else
      {
        
    _hangDonvi soKhongDau 1000;
        
    soKhongDau /= 1000;
        
        
    _hangNgan soKhongDau 1000;
        
    soKhongDau /= 1000;
        
        
    _hangTrieu soKhongDau 1000;
        
        
    _hangTy soKhongDau 1000;
        
        
    _mChuoiCacSo[0] = 0;
        
        if(
    _hangTy 0)
          
    printf("%s ty "TraVeBaChuSo(_hangTy));
        
        if(
    _hangTrieu 0)
          
    printf("%s trieu "TraVeBaChuSo(_hangTrieu));
        
        if(
    _hangNgan 0)
          
    printf("%s ngan "TraVeBaChuSo(_hangNgan));
        
        if(
    _hangDonvi 0)
          
    printf("%s"TraVeBaChuSo(_hangDonvi));
      }
      return 
    0;

    sString [50] = "" -> chuỗi rỗng.

    Lần sau post thread không có bỏ chữ HOT nữa nha bạn -> that's annoying !
    Đã được chỉnh sửa lần cuối bởi rox_rook : 15-02-2008 lúc 10:43 AM.

  4. #4
    Ngày gia nhập
    12 2007
    Bài viết
    224

    char s[50] = "";
    Ở đây khai báo 1 chuỗi s . Chắc bạn thắc mắc tại sao lại phải khởi gán cho nó ? Như thế này : khi bạn khởi gán 1 chuổi mà ko đủ số ký tự khởi gán , ở đây là 50 mà chỉ khởi gán có "" tức là bảo đảm cho chuỗi của bạn cả 50 ký tự đều là ký tự NULL ( ký tự kết thúc chuỗi , báo hiệu dấu hiệu kết thúc chuỗi ) .

    char kyso[10][5]= {"", "mot", "hai", "ba", "bon", "nam", "sau",
    "bay", "tam", "chin"};
    Cái này cũng rất dễ hiểu : bạn có 1 ma trận 10*5 , thì dòng đầu tiên của ma trận sẽ là "" , dòng thứ 2 là "mot" , dòng thứ 3 là "hai" , ...

  5. #5
    Ngày gia nhập
    12 2006
    Nơi ở
    US
    Bài viết
    1,917

    Ở đây khai báo 1 chuỗi s . Chắc bạn thắc mắc tại sao lại phải khởi gán cho nó ? Như thế này : khi bạn khởi gán 1 chuổi mà ko đủ số ký tự khởi gán , ở đây là 50 mà chỉ khởi gán có "" tức là bảo đảm cho chuỗi của bạn cả 50 ký tự đều là ký tự NULL ( ký tự kết thúc chuỗi , báo hiệu dấu hiệu kết thúc chuỗi ) .
    Global variable and static variable tự động set to NULL và 0 theo mặc định, cái đó là thừa mà em bé sieuphuong bé bỏng của anh .
    Đã được chỉnh sửa lần cuối bởi rox_rook : 15-02-2008 lúc 05:10 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