|
Математика: Разное.
Запись числа прописью.
Алгоритм, имхо, очевиден.
Вот исходник на Паскале.
function GetByWords(L: Longint): string;
const
_1_2: array[1..2] of string[5] = ('одна ','две ');
_1_19: array[1..19] of string[13] = (
'один ', 'два ',
'три ', 'четыре ',
'пять ', 'шесть ',
'семь ', 'восемь ',
'девять ', 'десять ',
'одиннадцать ','двенадцать ',
'тринадцать ','четырнадцать ',
'пятнадцать ','шестнадцать ',
'семнадцать ','восемнадцать ',
'девятнадцать ');
des: array[2..9] of string[12] = (
'двадцать ', 'тридцать ',
'сорок ', 'пятьдесят ',
'шестьдесят ', 'семьдесят ',
'восемьдесят ','девяносто ');
hang: array[1..9] of string[15] = (
'сто ', 'двести ',
'триста ', 'четыреста ',
'пятьсот ', 'шестьсот ',
'семьсот ', 'восемьсот ',
'девятьсот ');
NameRub: array[1..3] of string[7] = ('рубль ','рубля ','рублей ');
NameTho: array[1..3] of string[7] = ('тысяча ','тысячи ','тысяч ');
NameMil: array[1..3] of string[10] = ('миллион ','миллиона ','миллионов ');
NameMrd: array[1..3] of string[11] = ('миллиард ','миллиарда ','миллиардов
');
var
S,S1: string;
Many: Byte;
procedure Semantic(I: Longint; var Words: string; var Fem: Byte);
begin
Words:='';
if I>=100then
begin
Words:=Concat(Words,hang[I div 100]);
I:=I mod 100;
end;
if I>19then
begin
Words:= Concat(Words,des[I div 10]);
I:=I mod 10;
end;
if I<>0then if (I<3)and (Fem<>0)then Words:=Concat(Words,_1_2[I])
else Words:=Concat( Words,_1_19[I]);
case I of
1: Fem:=1;
2..4: Fem:=2;
else Fem:=3;
end;
end;
begin
S:='';
if L>=1000000000then
begin
Many:=0;
Semantic(L div 1000000000,S1,Many);
S:=Concat(S1,NameMrd[Many]);
L:=L mod 1000000000;
end;
if L >=1000000 then
begin
Many:=0;
Semantic(L div 1000000,S1,Many);
S:=Concat(S1,NameMil[Many]);
L:=L mod 1000000;
end;
if L >=1000 then
begin
Many:=1;
SeMantic(L div 1000,S1,Many);
S:=Concat(S,S1,NameTho[Many]);
L:=L mod 1000;
end;
if L >=1 then
begin
Many:=0;
Semantic(L ,S1,Many);
S:= Concat( S,S1,NameRub[Many]);
end;
GetByWords:=S;
end;
 Вверх по странице, к оглавлению и навигации.
| |