Challenge: Đọc số và viết số

Sau khi lầm mò thì e có tìm được một quy tắc đọc “năm”, “lăm” như thế này.

Mình xem ở phần mềm đổi số ra chữ trong excel thì xét 1 số trường hợp sau Mình viết số trước và cách viết liên quan đến số 5 sau.
Số 5 năm=> 1 chữ số thì đọc là năm
55 Năm mươi năm=> 2 chữ số thì đọc là năm ở hàng đơn vị và chục
505: Năm trăm lẻ năm ngàn
515: Năm trăm mười lăm ngàn
555 Năm trăm năm mươi lăm ngàn
=>3 chữ số thì
hàng trăm đọc là năm trăm
hàng chục là lăm
còn hàng đơn vị thì phụ thuộc vào hàng chục nếu hàng chục = 0 thì số 5 ở hàng đơn vị đọc là năm, và ngược lại đọc là lăm
Từ 4 chữ số trở đi phải tách làm các hàng trăm, hàng ngàn, hàng triệu
Các hàng ngàn, triệu , tỷ… sẽ theo quy tắc tương tự hàng trăm
Đó là theo ý kiến của mình, mọi người thử vài con số chơi xem sao

E thấy cũng hợp lý, vì từ bé đến h e toàn đọc “lăm” là “năm”, k biết là cô giáo k dạy hay là hôm đấy mình nghỉ học. :slight_smile:

Chuẩn là năm mươi lăm nhé bạn. Như “55 năm” :smiley:

2 Likes

:clap: Vậy đơn giản là có “mươi”, “mười” :point_right: “lăm”, để cho đỡ nhầm là mình đang đếm năm (year :joy:).

Loạn hết cả lên, “năm” với chả “lăm”. Đành tự theo quy tắc của mình vậy.
Cứ có “mươi” or “mười” auto “lăm”, còn lại là “năm”. :joy:
Vẫn là nhờ các đại ca tìm hộ xem có sai sót gì không.
Link :point_right: https://ideone.com/QObiib.

1000005 in words is: Mot Trieu Khong Tram Linh Lam  

“Linh Năm” mà bạn ơi :joy:

3 Likes

Vì ở trên của test đại ca thì cái này nó k in đậm cứ nghĩ là đúng r chứ. :joy:

quẹt thiếu :V do test bằng mắt nên ko chính xác hết :V để sửa lại

cách test tốt nhất là viết 1 cái hàm test case nho nhỏ rồi chạy 1 cái test suite bao gồm nhiều test cases và thống kê lại fail bao nhiêu cái, fail cái nào, expected là gì mà output là gì cho biết :V

3 Likes

Cái nào đúng vậy:

  • 5015110 in words is: Nam Trieu Khong Tram Muoi Nam Nghin Mot Tram Muoi

  • 5015110 in words is: Nam Trieu Khong Tram Muoi Lam Nghin Mot Tram Muoi

Phân vân quá @@, e nghĩ là cái đầu.

cái thứ 2 chứ, 15 đọc là mười lăm mà :V

giờ mới phát hiện ra nhiều người đọc mười năm, hai mươi năm, ko hiểu :V

5xx: năm trăm
x5x: năm mươi
x05: linh năm
x15: mười lăm
xy5: y mươi lăm (2 <= y <= 9)
5: năm :V

3 Likes

Đã fix thưa đại ca https://ideone.com/gJDTWJ :slight_smile:.

2 Likes

vậy chắc ổn rồi đó :joy:

nếu được thì 1’000’001 thêm “không nghìn” thành “một triệu không nghìn không trăm linh một” được ko :V Tự dưng có “không trăm” mà ko có “không nghìn” thấy kì kì. Nếu thiếu 1 cái thì đáng lẽ đọc là “một triệu linh một” luôn cho rồi :V


tiếp theo là cho đọc có dấu đi. Muoi phải phân biệt mười với mươi, một phải phân biệt một với mốt cho vui :V

tiếp theo nữa cho option đặt dấu phẩy giữa 3 số, ví dụ 1’000’001 đọc là “một triệu, không nghìn, không trăm linh một” hoặc option đặt dấu phẩy giữa 9 số: 11’000’000’001 là “mười một tỷ, không triệu không nghìn không trăm linh một”

tiếp theo cho option chọn giữa “tỷ” với “tỉ”, “bốn” với “tư”, “nghìn” với “ngàn”, “linh” với “lẻ”, v.v… :V

tiếp theo cho phép đọc tắt chữ mươi :V hai mươi lăm thành hai nhăm hay hai lăm, 35 thành ba lăm, 53 thay vì năm mươi ba thì đọc tắt là năm ba

tiếp theo tạo option cho sẵn: option đọc đầy đủ (không triệu không nghìn không trăm) hoặc đọc ngắn nhất (tiết kiệm dòng, mực in :V) bốn -> tư, tỷ -> tỉ, linh -> lẻ, đọc tắt chữ mươi v.v…

2 Likes

:rofl::rofl: Thế chắc k đủ if mất, đề cho có 7 if.
Cơ mà đọc song post của đại ca e cũng tróng mặt mất r. :joy:

thì tự tạo challenge khác bỏ cái challenge củ chuối này đi :smiling_imp:

2 Likes

Sao lại thế :rage:

Bạn tạm thời quên yêu cầu 7 if đã, sau đó tối ưu if sau :smile:

1 Like

tiếp theo em tạo 1 trang web tĩnh chỉ có 1 ô nhập vào số rồi nó sẽ đọc thành chữ, thêm option vào kế bên để nó đọc dài hay ngắn, bỏ luôn thằng C đi :dizzy_face:

nếu em vẫn thích thằng C nhưng muốn bưng lên web thì em down cái emscripten về rồi compile C thành JS, chém gió trình cao hơn nữa :scream:

2 Likes

Vẫn là nó, nhưng là bản tiếng Việt, đã add “Mốt”, “Tư”.
link :point_right: https://ideone.com/cHqaol.

3 Likes

code C này cần làm 2 điều nữa :V

1 là phải free chuỗi được hàm d2w(s) trả về :V :V
2 là tham số d2w nhận vào nên là hằng, để ví dụ gọi d2w("12") được. Hiện tại d2w thay đổi nội dung tham số s truyền vào là ko ổn :V

cái nào là hằng số thì để là hằng số (hằng chuỗi). Ví dụ

char oneDigit[][10] = {"Không", "Một", "Hai", ...

thì oneDigit[i] là hằng chuỗi thì nên khai báo nó là hằng chuỗi :V

const char* oneDigit[] = {"Không", "Một", "Hai", ...
3 Likes

Chắc là ổn r, nhờ đại ca tối ưu if nữa là ok.

2 Likes

9 if + 1 switch

3 Likes

https://7121712.xyz/doc-so-thanh-chu/main.cpp 17 if :kissing_closed_eyes:
xài thử: https://7121712.xyz/doc-so-thanh-chu/

compile emscripten có int main() :joy:
https://7121712.xyz/doc-so-thanh-chu.exe/main.cpp
https://7121712.xyz/doc-so-thanh-chu.exe/ <-- bấm Cancel 2 lần để dừng chương trình

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?