Trang 2 trên tổng số 3 Đầu tiênĐầu tiên 123 Cuối cùngCuối cùng
Từ 11 tới 20 trên tổng số 28 kết quả

Đề tài: Code chuyển tiền số sang chữ trên C#

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

    Mặc định Code chuyển tiền số sang chữ trên C#

    cái này có thể quy về bài toán đọc chữ số. Bắt đầu với đọc 1 số rồi 2, 3, 6,9,12,15,18,21... ý tưởng của mình nà thế. mà hình như mấy code trên chỉ đọc dc tới 18 số thui, chưa coi kỹ nữa. hihi
    i dont care who are u, where yr from, what u did , as long as u love me

  2. #12
    Ngày gia nhập
    10 2010
    Nơi ở
    Unallocated Memory
    Bài viết
    47

    Trích dẫn Nguyên bản được gửi bởi cosmos Xem bài viết
    Mình biết là "tỉ tỉ", nhưng vấn đề là code của bạn chưa đưa ra được chữ "tỉ tỉ"
    "Làm đẹp" tức là xóa các khoảng trắng thừa, viết hoa chữ đầu tiên
    Bạn xem đoạn cuối trong code của mình (trên đây vài bài), nhưng vẫn còn 1 lỗi nhỏ, mình đưa nó vào comment, vì nó chưa chạy được.
    1. Ok, vấn đề chữ "tỉ tỉ" bạn nói mình đã sửa lại.
    2. Mỗi người có một định nghĩa "đẹp" riêng. Có cùng một vật mà đối với người này thì đẹp, người khác lại xấu. Vì vậy hãy để cho mỗi người tự tạo nét đẹp cho riêng mình nhé. Riêng mình thấy đơn giản dễ hiểu là được rồi, quan trọng là ra kết quả, không cần màu mè.
    Nghìn dặm phong ba cách tiếng lòng
    Vạn sầu thương nhớ nỗi hư không
    Nhìn phương xa ấy, mình ta ngóng
    Cố với tay theo một bóng hồng

  3. #13
    Ngày gia nhập
    11 2010
    Bài viết
    41

    Code của @puss đọc được số rất lớn, lại ngắn nữa. mình mới test tới 40 chữ số.
    i dont care who are u, where yr from, what u did , as long as u love me

  4. #14
    Ngày gia nhập
    07 2009
    Nơi ở
    Tp.HCM
    Bài viết
    238

    Bài của bạn Puss viết khá hay nhưng còn gặp 2 bug:
    1. Tỷ
    Ví dụ: nhập vào 100.000.000.000.000 -> một trăm nghìn tỷ
    Nhưng kết quả chương trình cho ra là: một trăm nghìn. Thiếu chữ tỷ.
    2. Đọc số 5.
    Ví dụ: nhập vào 185.000 -> một trăm tám mươi lăm nghìn.
    Nhưng kết quả chương trình cho ra là: một trăm tám mưới năm nghìn. Chữ lăm biến thành năm.

    Nhưng tổng thể cách của bạn rất cool. Đọc số có bao nhiêu chữ số cũng được, còn những cách ở trên chỉ giới hạn = max của kiểu decimal thôi. Thanks đã chia sẻ.
    Khi bạn cầm trên tay một món hàng Trung Quốc là bạn đang giúp Trung Quốc có thêm những viên đạn, những khẩu súng để bắn vào người Việt Nam.

  5. #15
    Ngày gia nhập
    10 2010
    Nơi ở
    Unallocated Memory
    Bài viết
    47

    Trích dẫn Nguyên bản được gửi bởi itkttn Xem bài viết
    Bài của bạn Puss viết khá hay nhưng còn gặp 2 bug:
    1. Tỷ
    Ví dụ: nhập vào 100.000.000.000.000 -> một trăm nghìn tỷ
    Nhưng kết quả chương trình cho ra là: một trăm nghìn. Thiếu chữ tỷ.
    2. Đọc số 5.
    Ví dụ: nhập vào 185.000 -> một trăm tám mươi lăm nghìn.
    Nhưng kết quả chương trình cho ra là: một trăm tám mưới năm nghìn. Chữ lăm biến thành năm.

    Nhưng tổng thể cách của bạn rất cool. Đọc số có bao nhiêu chữ số cũng được, còn những cách ở trên chỉ giới hạn = max của kiểu decimal thôi. Thanks đã chia sẻ.
    Bug 1 mình đã sửa lại rồi.
    Còn bug 2 như bạn nói thì mình chạy thấy không có. 185000 thì kết quả đọc vẫn là "một trăm tám mươi năm nghìn"
    Nghìn dặm phong ba cách tiếng lòng
    Vạn sầu thương nhớ nỗi hư không
    Nhìn phương xa ấy, mình ta ngóng
    Cố với tay theo một bóng hồng

  6. #16
    Ngày gia nhập
    02 2010
    Bài viết
    52

    Mặc định Code chuyển tiền số sang chữ trên C#

    Trích dẫn Nguyên bản được gửi bởi puss Xem bài viết
    Bug 1 mình đã sửa lại rồi.
    Còn bug 2 như bạn nói thì mình chạy thấy không có. 185000 thì kết quả đọc vẫn là "một trăm tám mươi năm nghìn"
    ý của itkttn là chữ "năm" đổi thành chữ "lăm"

    đây là 1 phần của đoạn code của mình
    Visual C# Code:
    1.         private string replace_special_word(string chuoi)
    2.         {
    3.             chuoi = chuoi.Replace("không mươi không ", "");
    4.             chuoi = chuoi.Replace("không mươi", "lẻ");
    5.             chuoi = chuoi.Replace("i không", "i");
    6.             chuoi = chuoi.Replace("i năm", "i lăm");
    7.             chuoi = chuoi.Replace("một mươi", "mười");
    8.             chuoi = chuoi.Replace("mươi một", "mươi mốt");
    9.             return chuoi;
    10.         }

    ban đầu mình định làm 1 đoạn code chuyển số tiền dài vô hạn nhưng mình thử chưa được (mới nhập môn chưa quen code ^^!)
    nhưng mình thấy dài quá cũng ko được gì, tỷ tỷ là nhiều lắm rồi, đâu ai xài đến con số đó ^^
    Email : leminhphuoc89@gmail.com

  7. #17
    Ngày gia nhập
    01 2011
    Bài viết
    46

    Cho mình hỏi chút!
    1000000001000000000 đọc là "Một tỷ tỷ không trăm linh một tỷ" hay là "Một tỷ không trăm linh một tỷ" thì đúng nhỉ? (mình chọn cách thứ nhất)
    1000000001000000000 một tỷ tỷ lẻ một tỷ
    1000000000000000001 một tỷ tỷ lẻ một
    1100000001000000000 một tỷ tỷ một trăm triệu không trăm linh một tỷ
    1100000001100000001 một tỷ tỷ một trăm triệu không trăm linh một tỷ một trăm triệu không trăm linh một
    Nếu là "Một tỷ tỷ lẻ một tỷ" thì có nên viết "tỷ tỷ" thành "tỷ_tỷ" cho nó dễ phân biệt không?

    Trích dẫn Nguyên bản được gửi bởi lion080889 Xem bài viết

    ban đầu mình định làm 1 đoạn code chuyển số tiền dài vô hạn nhưng mình thử chưa được (mới nhập môn chưa quen code ^^!)
    nhưng mình thấy dài quá cũng ko được gì, tỷ tỷ là nhiều lắm rồi, đâu ai xài đến con số đó ^^
    Đọc một chuỗi dài vô hạn không có gì khó đâu. Chỉ cần viết hàm đọc tốt đến 9 số. sau đó cho lặp lại từng nhóm 9 số rồi thêm chữ tỷ lặp theo cấp nhóm đó là được rồi!
    Mình đã viết và chạy khá ổn

    Visual C# Code:
    1.         public static string DocSoLon(string strSoLon)
    2.         {
    3.             string strReturn = "";
    4.             bool âm = false;
    5.             if (!KiemTraChuoiSo(strSoLon))
    6.             {
    7.                 return "Chuỗi số sai";
    8.             }
    9.             //Xử lý chuỗi số trước khi đọc
    10.             strSoLon = strSoLon.Trim();
    11.             //loại bỏ dấu âm:
    12.             while (strSoLon.Length > 1 && (strSoLon.Substring(0, 1) == "-" || strSoLon.Substring(0, 1) == "+"))
    13.             {
    14.                 if (strSoLon.Substring(0, 1) == "-")
    15.                 {
    16.                     âm = !âm;
    17.                 }
    18.                 strSoLon = strSoLon.Substring(1);
    19.             }
    20.             //Bỏ các số "0" đằng trước, vẫn để dành lại một số để đọc :D
    21.             while (strSoLon.Length>1 && strSoLon.Substring(0,1)=="0")
    22.             {
    23.                 strSoLon = strSoLon.Substring(1);
    24.             }
    25.             if (strSoLon == "")
    26.             {
    27.                 return "Không";
    28.             }
    29.             //Chia thành các nhóm 9 số để đọc
    30.             int SoChuSo = strSoLon.Length;
    31.             int SoCapTy = 0;
    32.             while (SoChuSo>0)
    33.             {
    34.                 if (SoChuSo >= 9)
    35.                 {
    36.                     strReturn = (Convert.ToInt32(strSoLon.Substring(SoChuSo - 9)) == 0 ? "" : DocSoThanhChu(strSoLon.Substring(SoChuSo - 9)) + " "+ ChuTy(SoCapTy) + " ") + strReturn;
    37.  
    38.                     SoChuSo = SoChuSo - 9;
    39.                     strSoLon = strSoLon.Substring(0, SoChuSo);
    40.                 }
    41.                 else
    42.                 {
    43.                     strReturn = (Convert.ToInt32(strSoLon) == 0 ? "" : DocSoThanhChu(strSoLon) + " " + ChuTy(SoCapTy) + " ") + strReturn;          
    44.                     SoChuSo = 0;
    45.                     strSoLon = "";
    46.                 }
    47.                 SoCapTy++;
    48.             }
    49.             //Gán phần âm
    50.             if (âm)
    51.             {
    52.                 strReturn = "Âm " + strReturn;
    53.             }
    54.             //Loại khoảng trắng dư
    55.             strReturn = strReturn.Trim();
    56.             while (strReturn.Contains("  "))
    57.             {
    58.                 strReturn = strReturn.Replace("  ", " ");
    59.             }
    60.             //Viết hoa chữ đầu:
    61.             if (strReturn.Length > 0)
    62.                 strReturn = strReturn.Substring(0, 1).ToUpper() + strReturn.Substring(1).ToLower();
    63.  
    64.             return strReturn;
    65.         }
    Visual C# Code:
    1. public static string DocSoThanhChu(string number)//<=
    2.         {
    3.             string strReturn = "";
    4.             string s = number;
    5.             while (s.Length>0 && s.Substring(0,1)=="0")
    6.             {
    7.                 s = s.Substring(1);
    8.             }
    9.             string[] so = new string[] { "không", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín" };
    10.             string[] hang = new string[] { "", "nghìn", "triệu", "tỷ" };
    11.             int i, j, donvi, chuc, tram;
    12.  
    13.             bool booAm = false;
    14.             decimal decS = 0;
    15.            
    16.             try
    17.             {
    18.                 decS = Convert.ToDecimal(s.ToString());
    19.             }
    20.             catch {  }
    21.  
    22.             if (decS < 0)
    23.             {
    24.                 decS = -decS;
    25.                 //s = decS.ToString();
    26.                 booAm = true;
    27.             }
    28.             i = s.Length;
    29.             if (i == 0)
    30.                 strReturn = so[0] + strReturn;
    31.             else
    32.             {
    33.                 j = 0;
    34.                 while (i > 0)
    35.                 {
    36.                     donvi = Convert.ToInt32(s.Substring(i - 1, 1));
    37.                     i--;
    38.                     if (i > 0)
    39.                         chuc = Convert.ToInt32(s.Substring(i - 1, 1));
    40.                     else
    41.                         chuc = -1;
    42.                     i--;
    43.                     if (i > 0)
    44.                         tram = Convert.ToInt32(s.Substring(i - 1, 1));
    45.                     else
    46.                         tram = -1;
    47.                     i--;
    48.                     if ((donvi > 0) || (chuc > 0) || (tram > 0) || (j == 3))
    49.                         strReturn = hang[j] + strReturn;
    50.                     j++;
    51.                     if (j > 3) j = 1;   //Tránh lỗi, nếu dưới 13 số thì không có vấn đề.
    52.                                         //Hàm này chỉ dùng để đọc đến 9 số nên không phải bận tâm
    53.                     if ((donvi == 1) && (chuc > 1))
    54.                         strReturn = "mốt " + strReturn;
    55.                     else
    56.                     {
    57.                         if ((donvi == 5) && (chuc > 0))
    58.                             strReturn = "lăm " + strReturn;
    59.                         else if (donvi > 0)
    60.                             strReturn = so[donvi] + " " + strReturn;
    61.                     }
    62.                     if (chuc < 0) break;//Hết số
    63.                     else
    64.                     {
    65.                         if ((chuc == 0) && (donvi > 0)) strReturn = "linh " + strReturn;
    66.                         if (chuc == 1) strReturn = "mười " + strReturn;
    67.                         if (chuc > 1) strReturn = so[chuc] + " mươi " + strReturn;
    68.                     }
    69.                     if (tram < 0) break;//Hết số
    70.                     else
    71.                     {
    72.                         if ((tram > 0) || (chuc > 0) || (donvi > 0)) strReturn = so[tram] + " trăm " + strReturn;
    73.                     }
    74.                     strReturn = " " + strReturn;
    75.                 }
    76.             }
    77.             if (booAm) strReturn = "Âm " + strReturn;
    78.             return strReturn.Trim();// = str+ "đồng chẵn";
    79.         }

    10000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00
    Một trăm tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_ tỷ đồng chẵn

    55555555555555555555555555555555555555555555555555 55555555555555555555555555555555555555555555555555 55
    Năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_ tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ_tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ_tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm tỷ năm trăm năm mươi lăm triệu năm trăm năm mươi lăm nghìn năm trăm năm mươi lăm đồng chẵn
    Đã được chỉnh sửa lần cuối bởi huuanhuynh : 21-09-2011 lúc 04:54 PM. Lý do: update

  8. #18
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Down về --> AddReferenns --> tựu xử nha!!

    Sao mà nhiều đáp án vậy!!!

    Làm chi mà tỷ tỷ tỷ cho mệt thế, tiền bình thường trong thanh toán là dc rồi!
    Attached Files Attached Files

  9. #19
    Ngày gia nhập
    01 2011
    Bài viết
    46

    Cái đám số 5 ở trên của bạn đọc là:
    Năm Trăm Năm Mươi LămTỷNăm Trăm Năm Mươi LămTriệuNăm Trăm Năm Mươi Lăm Nghìn Năm Trăm Năm Mươi LămTỷNăm Trăm Năm Mươi SáuTriệuTỷTỷTỷTỷTỷTỷTỷTỷTỷĐ ng

    (Hình như do lỗi kiểu dữ liệu Decimal)

  10. #20
    Ngày gia nhập
    10 2011
    Bài viết
    447

    Bạn ơi cho mình hỏi làm thế nào để hiện thị trong CrystalReportViwer ở dạng từ số đổi thành chữ vậy, mình mới học C#, mong các bạn giúp đở chỉ chi tiết mình với, cảm ơn nhiều lắm.

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

  1. Chuyển code sang code ngắn hơn trong LINQ
    Gửi bởi tinhthanhiepsi9x trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 14-04-2012, 11:19 AM
  2. chuyển từ code C++ sang C
    Gửi bởi nuocmatthanghe_90 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 26-02-2011, 10:02 AM
  3. Chuyển code Nested Dolls từ C sang code pascal
    Gửi bởi longago trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 04-01-2011, 08:54 AM
  4. chuyển code C++ từ VC++ 6.0 sang VC++ 9.0
    Gửi bởi chieftain_vn trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 3
    Bài viết cuối: 07-04-2009, 10:18 AM
  5. Chuyển code C++ sang code C, giúp mình với?
    Gửi bởi rong3sao trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 03-04-2009, 09:28 AM

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