PDA

View Full Version : cách đổi số sang chữ như thế nào



lamduycanh
05-10-2007, 20:06
Có ai biết đổi số sang chữ bằng javacript ko
ví dụ : 18,956,354
phải ra bằng chữ là: mười tám triệu chín trăm năm mươi sáu nghìn ba trăm năm mưoi bốn

làm sao để làm được vậy các bác
Đề này thầy cho về tự nghiên cứu mà lấy điểm một tiết
xin cứu giúp
em bí rồi

thuongshoo
11-10-2007, 11:16
Chạy thử cái này xem nhe! Vài bữa nữa tui mới chạy thử được :D

decimal meomeo;
meomeo=11111111111;
string gaugau=meomeo.ToString();

kataykaty
16-10-2007, 07:59
bài này là bài thi của mình bí lù không giải được mà bài này dài lắm vì phải sử lý với số 5 ("lăm" với "năm")số 0("lẻ" với không ) số 10 ("mười")

thuongshoo
16-10-2007, 14:08
à! coi lại rôì!
Cái này là đọc số, chứ 0 phải chuyển số sang chữ!

Bài này hồi học pascal có làm rồi!
Cũng 0 có gì khó đâu!
Bạn chia chuỗi số thành nhóm 3 ký tự.
Nhóm đầu tiên: trăm, chục, đơn vị
Nhóm thứ hai: (trăm,chục) + ngàn
Nhóm thứ ba: (trăm, chục)+ triệu

Như vậy, bạn xử lý 3 chữ số thôi! Tức là xử lý nhóm đầu thành công thì coi như được 1/2 bài toán.
105 -> 1 trăm lẻ năm
5 -> năm , 005--> năm
25 --> hai mươi lăm
15--> mười lăm

Nói vung,if if vài cái là được thôi! Chúc bạn thành công!
MÀ sao lâu vô quá vậy? trả lời rồi mà tới 1 tuần sau bạn mới vô lại
Hình như có cái vbscript làm cái này á! bạn tìm thử xem!

thuongshoo
17-10-2007, 19:22
nè! mới kiếm nè! bạn chuyển thành java nhe!


Function Doisangsochuan(BaoNhieu)
BaoNhieu = Trim(BaoNhieu)
'Cat bỏ khoảng trống
Do While InStr(1,BaoNhieu," ") > 0
BaoNhieu = Mid(BaoNhieu, 1, InStr(1, BaoNhieu, " ") - 1) & Mid(BaoNhieu, InStr(1, BaoNhieu, " ") + 1)
Loop
Do While InStr(1, BaoNhieu, ".") > 0
BaoNhieu = Mid(BaoNhieu, 1, InStr(1, BaoNhieu, ".") - 1) & Mid(BaoNhieu, InStr(1, BaoNhieu, ".") + 1)
Loop
Doisangsochuan = BaoNhieu
End Function

'================================================= ====
'Hàm này dùng để đổi tiền từ số sang chuẩn
'================================================= ====
Function Tienchu(so)
Dim sotien, Hang, Donvi, Dem, tien
Dim Ketquacc
Dim n, Nhom, K
Hang = Array("None", "trăm", "mươi", "gì đó")
Donvi = Array("None", "ngàn tỷ", "tỷ", "triệu", "ngàn", "đồng", "")
Dem = Array("None", "một", "hai", "ba", "bốn", "năm", "sáu", "bảy", "tám", "chín")
sotien = CStr(Cdbl(Doisangsochuan(so))) 'Đưa số về dạng chuẩn ko có dấu phân cách
dai = len(sotien)
If Cdbl(sotien) = 0 then
Ketquacc = "Không đồng"
Else ' sotien khác 0
sotien = Abs(sotien) & ".00"
sotien = Right(Space(15) & sotien, 18) ' Lay tong cong 18 ky tu
For n = 1 to 6
Nhom = Mid(sotien, (n * 3) - 2, 3)
If Nhom <> Space(3) Then
Select Case Nhom
Case "000"
If n = 5 Then
chu = "đồng" & Space(1)
Else
chu = Space(0)
End If
Case ".00"
chu = ""
Case Else
S1 = Left(Nhom, 1) : S2 = Mid(Nhom, 2, 1) : S3 = Right(Nhom, 1)
chu = Space(0) : Hang(3) = Donvi(n)
For K = 1 To 3
dich = Space(0)
If (Mid(Nhom, K, 1) <> " ") then
S = Cint(Mid(Nhom, K, 1))
If S > 0 Then
dich = Dem(S) & Space(1) & Hang(K) & Space(1)
Else
If (K = 1) And (n > 1) And (n < 6) Then
dich = "không" & Space(1) & Hang(K) & Space(1)
End If
End If
Select Case K
Case 2 And S = 1
dich = "mười" & Space(1)
Case 3 And S = 0 And Nhom <> Space(2) & "0"
dich = Hang(K) & Space(1)
Case 3 And S = 5 And s2 <> Space(1) And s2 <> "0"
dich = "l" & Mid(dich, 2)
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And n = 5) Then
dich = "lẻ" & Space(1)
End If
End Select ' Của K
chu = chu & dich
End if 'Của S khác " "
Next 'K
Vitri = InStr(chu, "mươi một")
If Vitri > 0 Then
chu = Thaythechuoi(chu,"mươi một","mươi mốt")
End If
Ketqua = Ketqua & chu
End Select
End if
Next ' Của n
End if
Ketquacc = UCase(Left(Ketqua, 1)) & Trim(Mid(Ketqua, 2))
if Instr(Ketquacc,"đồng") = 0 then
Ketquacc = Ketquacc & " đồng"
End if
Tienchu = Ketquacc
End Function

'Kết thúc hàm

chieunt
18-02-2008, 10:12
Theo như bạn nói N là số hàng triệu vậy tôi gọi N là 1 số đó.Dùng các biểu thức sau để đọc số(số càng lớn thì biểu thức càng phức tạp).
Chú ý: bài toán này chỉ áp dụng cho những số < 10 triệu.Nếu muốn đọc số lớn hơn thì tự nâng cấp nhé!

int trieu = N/1000000;//Đọc chữ số hàng triệu

int tramnghin = (N - 1000000)/100000; //Đọc chữ số hàng trăm nghìn

int chucnghin = (N - 1000000 - (tramnghin*100000))/10000; //Đọc chữ số hàng chục nghìn

int nghin = (N - 1000000 - (tramnghin*100000) - (chucnghin*10000))/1000; //Đọc chữ số hàng nghìn

int tram = (N - 1000000 - (tramnghin*100000) - (chucnghin*10000) - (nghin*1000))/100; //Đọc chữ số hàng trăm

int chuc = (N - 1000000 - (tramnghin*100000) - (chucnghin *10000) - (nghin*1000) - (tram*100))/10; //Đọc chữ số hàng chục

int donvi = (N - 1000000 - (tramnghin*100000) - (chucnghin*10000) - (nghin*1000) - (tram*100) - (chuc*10)); //Đọc chữ số hàng đơn vị

Nhìn rất loằng ngoằng phải không bạn?Nếu muốn dễ hiểu hơn thì hãy áp dụng với những số nhỏ trước(tốt nhất nên bắt đầu với số < 1000).Đây chỉ là các biểu thức để đọc số,nói to tát thì nó là thuật toán giải quyết bài này.Phần việc còn lại bạn tự làm nhé.
Gợi ý : Dùng cấu trúc SWITCH-CASE và vòng lặp IF-ELSE.
Chúc bạn thành công!

thuy04
05-11-2008, 13:52
cho hỏi hàm Doisangsochuan(BaoNhieu) và hàm tienchu có phải là code bằng VBA trong word ko?

thang kho
05-11-2008, 14:06
cho hỏi hàm Doisangsochuan(BaoNhieu) và hàm tienchu có phải là code bằng VBA trong word ko?

Hình như là VB.NET .

hongxanh08
12-11-2008, 13:50
Bài này dễ trước tớ làm mà ko bít vứt đâu. Để xem lục lại coi hihi. Đại loại mình sẽ chỉ cho bạn cách làm thôi.
Bạn phân tích số: 18 956 354 nhé.
Bạn sẽ thấy:
10 mười, 20 hai mươi, 30 mươi.... --> muoi (đơn vị là số 0)
11 mười một .... --> muoi mot
111 một trăm mười một.
1111 một nghìn một trăm mười một
xyzktp--> x trăm y mươi z + đơn vị + k trăm t mươi p + đơn vị .....
bạn phát hiện diều j mới chưa ???
String number = "1234567890";
int l = number.length;
String []dv = new String[]{"nghin", "trieu", "ty", "nghi ty", "trieu ty"};
String []tl = new String[]{"muoi","tram"};
....
Bạn tự nghĩ típ nghe, cũng đơn giản thui, nếu bó tay thì cứ nói tớ lục tìm lại cho hihi/

[=========> Bổ sung bài viết <=========]

Tớ vừa viết lại hihi, chưa test kỹ bà còn test hộ nghe:



public static String transformNumber(String number) {
// test number = "1234567890";
if (number == null || number.trim().length() == 0)
return "";
int t, l = number.length();
t = l - 1;
String[] dv = new String[] { "nghin", "trieu", "ty", "nghi ty", "trieu ty" };
String[] tl = new String[] { "muoi", "tram" };
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < l; i++) {
buffer.append(number.charAt(i)).append(" ");
int k = (t - 1) / 3;
if (k >= 0 && t > 0) {
if (t % 3 == 0)
buffer.append(dv[k]).append(" ");
else
buffer.append(tl[(t % 3) - 1]).append(" ");
--t;
}
}
number = buffer.toString();
// truong hop dc biet
number = number.replaceAll("muoi 0", "muoi").replaceAll("1 muoi 5", "muoi lam").replaceAll("1 muoi", "muoi").replaceAll("0 muoi", "le");
// thay so
number = number.replaceAll("1", "mot").replaceAll("2", "hai").replaceAll("3", "ba").replaceAll("4", "bon").replaceAll("5", "nam").replaceAll("6", "sau").replaceAll("7", "bay").replaceAll("8", "tam").replaceAll("9", "chin").replaceAll("0", "khong");
System.out.println("\n\n " + number + "\n\n");
return number;
}



1234567890
-->: mot ty hai tram ba muoi bon trieu nam tram sau muoi bay nghin tam tram chin muoi
1234567915
-->: mot ty hai tram ba muoi bon trieu nam tram sau muoi bay nghin chin tram muoi lam

hoangha28
06-04-2009, 11:14
bậnnò có thể vẻ sơ đồ khối của bài toán đổi số ra chữ được ko?
hepl me cho mình với

tiger86love102
07-04-2009, 04:50
Code dài khiếp người, ko phải tiger viết.
Đây hình như mới đọc số có 4 chữ số, dài hơn thì phát triển thêm.
Tác giả của nó viết tại: http://vnitclub.vnbb.com/viewtopic.php?f=44&t=177&st=0&sk=t&sd=a



package chuyensothanhchu;
import java.util.*;
public class chuyendoi {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("nhap vao mot so co 4 chu so: ");
int n=input.nextInt();
int ng = n/1000;
int tr =(n%1000)/100;
int ch=((n%1000)%100)/10;
int dv= n%10;

if((ng==1)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Mot ngan ");
else if((ng==2)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Hai ngan ");
else if((ng==3)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Ba ngan ");
else if((ng==4)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Bon ngan ");
else if((ng==5)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Nam ngan ");
else if((ng==6)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Sau ngan ");
else if((ng==7)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Bay ngan ");
else if((ng==8)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Tam ngan ");
else if((ng==9)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print("Chin ngan ");

else if((ng==0)&&(tr==1)&&(ch==0)&&(dv==0))
System.out.print("Mot tram ");
else if((ng==0)&&(tr==2)&&(ch==0)&&(dv==0))
System.out.print("Hai tram ");
else if((ng==0)&&(tr==3)&&(ch==0)&&(dv==0))
System.out.print("Ba tram ");
else if((ng==0)&&(tr==4)&&(ch==0)&&(dv==0))
System.out.print("Bon tram ");
else if((ng==0)&&(tr==5)&&(ch==0)&&(dv==0))
System.out.print("Nam tram ");
else if((ng==0)&&(tr==6)&&(ch==0)&&(dv==0))
System.out.print("Sau tram ");
else if((ng==0)&&(tr==7)&&(ch==0)&&(dv==0))
System.out.print("Bay tram ");
else if((ng==0)&&(tr==8)&&(ch==0)&&(dv==0))
System.out.print("Tam tram ");
else if((ng==0)&&(tr==9)&&(ch==0)&&(dv==0))
System.out.print("Chin tram ");

else if((ng==0)&&(tr==0)&&(ch==1)&&(dv==0))
System.out.print(" Muoi ");
else if((ng==0)&&(tr==0)&&(ch==2)&&(dv==0))
System.out.print("Hai muoi ");
else if((ng==0)&&(tr==0)&&(ch==3)&&(dv==0))
System.out.print("Ba muoi ");
else if((ng==0)&&(tr==0)&&(ch==4)&&(dv==0))
System.out.print("Bon muoi ");
else if((ng==0)&&(tr==0)&&(ch==5)&&(dv==0))
System.out.print("Nam muoi ");
else if((ng==0)&&(tr==0)&&(ch==6)&&(dv==0))
System.out.print("Sau muoi ");
else if((ng==0)&&(tr==0)&&(ch==7)&&(dv==0))
System.out.print("Bay muoi ");
else if((ng==0)&&(tr==0)&&(ch==8)&&(dv==0))
System.out.print("Tam muoi ");
else if((ng==0)&&(tr==0)&&(ch==9)&&(dv==0))
System.out.print("Chin muoi ");

else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==0))
System.out.print(" Khong ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==1))
System.out.print(" Mot ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==2))
System.out.print("Hai ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==3))
System.out.print("Ba ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==4))
System.out.print("Bon ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==5))
System.out.print("Nam ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==6))
System.out.print("Sau ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==7))
System.out.print("Bay ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==8))
System.out.print("Tam ");
else if((ng==0)&&(tr==0)&&(ch==0)&&(dv==9))
System.out.print("Chin ");

else
{
switch(ng) {
case 1:System.out.print("Mot ngan ");break;
case 2:System.out.print("Hai ngan ");break;
case 3:System.out.print("Ba ngan ");break;
case 4:System.out.print("Bon ngan ");break;
case 5:System.out.print("Nam ngan ");break;
case 6:System.out.print("Sau ngan ");break;
case 7:System.out.print("Bay ngan ");break;
case 8:System.out.print("Tam ngan ");break;
case 9:System.out.print("Chin ngan ");break;

}
switch(tr) {
case 0:System.out.print("Le ");break;
case 1:System.out.print("Mot tram ");break;
case 2:System.out.print("Hai tram ");break;
case 3:System.out.print("Ba tram ");break;
case 4:System.out.print("Bon tram ");break;
case 5:System.out.print("Nam tram ");break;
case 6:System.out.print("Sau tram ");break;
case 7:System.out.print("Bay tram ");break;
case 8:System.out.print("Tam tram ");break;
case 9:System.out.print("Chin tram ");break;
}
switch(ch) {
case 0:System.out.print("Le ");break;
case 1:System.out.print("Muoi ");break;
case 2:System.out.print("Hai muoi ");break;
case 3:System.out.print("Ba muoi ");break;
case 4:System.out.print("Bon muoi ");break;
case 5:System.out.print("Nam muoi ");break;
case 6:System.out.print("Sau muoi ");break;
case 7:System.out.print("Bay muoi ");break;
case 8:System.out.print("Tam muoi ");break;
case 9:System.out.print("Chin muoi ");break;
}
switch(dv) {

case 1:System.out.print("Mot ");break;
case 2:System.out.print("Hai ");break;
case 3:System.out.print("Ba ");break;
case 4:System.out.print("Bon ");break;
case 5:System.out.print("Nam ");break;
case 6:System.out.print("Sau ");break;
case 7:System.out.print("Bay ");break;
case 8:System.out.print("Tam ");break;
case 9:System.out.print("Chin");break;
}
}

}

}