Em đang rất cần thuật toán này mà chưa có hướng giải quyết. Nếu sử dụng if, else thi nhiều trường hợp lắm.
Cho e lời giải đáp nhé. Thanks các bác nhièu
Em đang rất cần thuật toán này mà chưa có hướng giải quyết. Nếu sử dụng if, else thi nhiều trường hợp lắm.
Cho e lời giải đáp nhé. Thanks các bác nhièu
Tách số !
Có phải phần tử thứ 1 ko có tiền tố ko
Phần tử thứ 2 sẽ có tiền tố "Chục"
Phần tử thứ 3 sẽ có tiền tố "Trăm"
Phần tử thứ 4 sẽ có tiền tố "Ngàn"...
Cảm ơn bác đã giúp đỡ. Ý e muốn là sử dụng tiếng anh. Vì mấy cái báo cáo hóa đơn sử dụng nó.
/CODE
function String_ConvertDecimal (Const Source : string ) : string ;
var
Subs : Astring ;
i : integer ;
Function UnitsOf (Source : char ) : string ;
begin
Case Source of
'0' : result := ' Kh«ng';
'1' : result := ' mét';
'2' : result := ' Hai';
'3' : result := ' Ba';
'4' : result := ' Bèn';
'5' : result := ' n¨m';
'6' : result := ' S¸u';
'7' : result := ' b¶y' ;
'8' : result := ' T¸m' ;
'9' : result := ' ChÝn' ;
End ;
// result := result + ext;
end;
Function TensOf (Source : char ) : string ;
begin
Case Source of
'0' : result := ' Linh';
'1' : result := ' mêi';
'2' : result := ' Hai m¬i';
'3' : result := ' Ba m¬i';
'4' : result := ' Bèn m¬i';
'5' : result := ' n¨m m¬i';
'6' : result := ' S¸u m¬i';
'7' : result := ' b¶y m¬i' ;
'8' : result := ' T¸m m¬i' ;
'9' : result := ' ChÝn m¬i' ;
End ;
end;
Function HundredsOf (Source : char ) : string ;
begin
result := UnitsOf (Source) + ' Tr¨m' ;
end;
Function Level ( Num : integer ) : String ;
begin
Result := '';
Case num Of
1 : result := ' Ngh×n';
2 : result := ' triÖu';
3 : result := ' Tû';
end;
end;
Function HundredsOfLevel (Source : String ; Num : integer ) : string ;
begin
result := '';
If Source ='000' then
begin
// Result := Level(Num);
exit;
End;
Case length (Source) of
3 :
begin
Result := result + Hundredsof(Source[1])
+ TensOf (Source[2]) ;
If Source[3]<>'0' then
result := Result
+UnitsOf (Source[3]) ;
End;
2 :
begin
If Source[2] <> '0' then
result := TensOF (Source[1])+ UnitsOf (Source[2])
Else
result := TensOF (Source[1]);
end;
1 :
Begin
result := UnitsOf (Source[1]);
End;
end;
// Writeln(Level(Num)); readln;
Result := Result + Level(Num);
end;
begin
//1,023,306,643
result :='';
String_Extract (Source , ',',Subs) ;
For i :=0 to High (Subs) do
begin
// Writeln(Subs[i]);Readln;
result := result + HundredsOfLevel (Subs[i],High(Subs)-i);
end;
end;
CODE/
Chuc vui !
[=========> Bổ sung bài viết <=========]
Thêm cái này cho đủ . viết = tiếng việt nên có thể hiển thị khó xem .
Hàm này dùng để tách chuỗi .
/Code
Function String_Extract (Soure : string ; Filters : string ;var return : Astring ; Mode : integer ): integer;
var
i , l, n, j : integer;
s,s1 :string;
c : char;
//.................................................. .......
function filtercheck (c: char ) : char ;
var i: integer;
begin
result :=#0;
for i:=1 to length (filters) do
if c = filters[i] then begin
result := c;
break;
End;
End;
//.................................................. .......
begin
s := soure ;
l := length (soure );
i:=1;
j := i;
n := High (return );
while i <= length(s) do
begin
c := filtercheck (s[i] );
if c<>#0 then
begin
s1 := copy(s, j ,i-j ) ;
String_clipspace(s1);
if (s1 <>'') then
begin
Setlength (return ,n+2 );
n := High (return );
return [n] := s1 ;
End;
j := i+1 ;
End;
inc(i) ;
End;
s1 := copy(s, j ,i-j ) ;
if s1<>'' then
begin
Setlength (return ,n+2 );
n := High (return );
String_ClipSpace(S1);
return [n] := s1 ;
End;
Result := Length (Return);
End;
/Code
Được sửa bởi Godbloc lúc 18:51 ngày 18-04-2008 Reason: Bổ sung bài viết
Bookmarks