ừm, lấy cái tên nào cho nó hợp lỗ tai chứ “không_nghìn” nghe ko hiểu gì hết
Share Code đọc số thành chữ, số lớn bao nhiêu cũng cân tất
3 Likes
Có code C++ không các bác?
1 Like
Bạn tự code lại chứ không xin code nhé.
2 Likes
It’s been a while since an interesting topic on dnh
lẽ ra hàm nhận vào int
thì ngon hơn nhưng python nó lại đi xấp xỉ với số quá lớn, hợ hợ trước giờ cứ tưởng cái unlimited digits feature của python phải ngon hơn thế cơ
my python code:
def read_number(num = "", level = -1):
if int(num) <= 0: return ""
if len(num) > 3:
to_read = int(num[-3:])
remaining = num[0:-3]
else:
remaining = "0"
to_read = int(num)
res = read_number(remaining, level + 1)
// đọc bình thường theo hàng trăm + explicit ở cuối (nghìn, triệu, tỉ)
explicit = ""
if level >= 0:
explicit = level_name[level%3]
if to_read <= 0:
if explicit == "tỉ ": return res + explicit
return res
second_name, third_name = "", ""
second_explicit = ""
unit = to_read % 10
tenth = int((to_read%100)/10)
hundredth = int(to_read/100)
first = digit_name[hundredth] + "trăm " if int(remaining) + hundredth > 0 else ""
if tenth == 0:
if unit > 0 and first != "":
second_explicit = "lẻ "
elif tenth == 1: second_name = "mười "
else:
second_name = digit_name[tenth]
second_explicit = "mươi "
if unit == 1 and tenth > 1: third_name = "mốt "
elif unit != 0: third_name = digit_name[unit]
return res + first + second_name + second_explicit + third_name + explicit
//Thêm hàm này để catch exception invalid syntax
def TransferToText(value = ""):
try:
val = int(value)
if val == 0: return digit_name[0]
return read_number(value)
except ValueError:
return "Error: Invalid syntax"
1 Like
Mình có làm một bài về đọc số từ 0 -> 999. Không biết như thế này đã “clean code” chưa.
public class test {
public static String motSo (int i) {
String result = "";
switch (i) {
case 1:result = "mot";break;
case 2:result = "hai";break;
case 3:result = "ba";break;
case 4:result = "bon";break;
case 5:result = "nam";break;
case 6:result = "sau";break;
case 7:result = "bay";break;
case 8:result = "tam";break;
case 9:result = "chin";break;
default:
break;
}
return result;
}
public static String haiSo(int i) {
String result = "";
if(i>=10 && i <= 19 && i != 15) {
result = "muoi"+motSo(i%10);
}
else if (i == 15)
result = "muoilam";
else if(i%10 == 5)
{
result = motSo(i/10) + "muoilam" ;
}
else {
result = motSo(i/10) + "muoi" + motSo(i%10);
}
return result;
}
public static void main(String[] args)
{
int number = 342;
String result = "";
if(number == 0)
result = "khong";
else if(number>0 && number <=9) {
result = motSo(number);
}
else if(number >= 10 && number <=99)
{
result = haiSo(number);
}
else if(number >=100 && number <=999)
{
if(number%100/10 == 0)
{
if(number%10 ==0)
result = motSo(number/100)+"tram";
else
result = motSo(number/100) + "tramle"+motSo(number%10);
}
else {
result = motSo(number/100)+"tram"+haiSo(number%100);
}
}
System.out.print(result+"\n");
}
}
1 Like
Bài này nghe hay nhỉ? tối về thử làm xem. Cơ mà số này tôi không biết đọc sao mới đúng. Ngày xưa đi học mẹ dặn, chỉ cần biết đếm tiền đến trăm tỉ thôi, lỡ số lớn hơn thì quy ra tiền đô, hoặc thuê thằng khác nó đếm hộ =))))))))))))))))))))))))))
2 Likes