Содержание материала

 

 

Code:

{ Преобразует трехзначное число в строку }

function ConvertToWord(N: word): string;

const

Sot : array[1..9] ofstring[13] =

('сто','двести','триста','четыреста','пятьсот',

'шестьсот','семьсот','восемьсот','девятьсот');

 

Des : array[2..9] ofstring[13] =

('двадцать','тридцать','сорок','пятьдесят',

'шестьдесят','семьдесят','восемьдесят','девяносто');

 

Edin : array[0..19] ofstring[13] =

('','один','два','три','четыре','пять','шесть','семь',

'восемь','девять','десять','одиннадцать','двенадцать',

'тринадцать','четырнадцать','пятнадцать',

'шестнадцать','семнадцать','восемнадцать','девятнадцать');

 

var

S: string;

begin

S:='';

N:=N mod1000;

if N>99then

begin

S:=Sot[N div100]+' ';

N:=N mod100;

end;

if N>19then

begin

S:=S+Des[N div10]+' ';

N:=N mod10;

end;

Result:=S+Edin[N];

end;

 

{ Возвращает сумму прописью }

function CenaToStr(r: Currency): string;

var

N, k: longint;

S: string;

begin

N:=trunc(R); S:='';

if N<>0then

begin

if N>999999then

begin

k:=N div1000000;

S:=ConvertToWord(k);

if ((k-(k div100)*100)>10) and ((k-(k div100)*100)<20) then

S:=S+' миллионов'

else

if (k mod10)=1then

S:=S+' миллион'

else

if ((k mod10)>=2)and((k mod10)<=4) then

S:=S+' миллиона'

else

S:=S+' миллионов';

N:=N mod1000000;

end;

if N>999then

begin

k:=N div1000;

S:=S+' '+ConvertToWord(k);

if ((k-(k div100)*100)>10)and((k-(k div100)*100)<20) then

S:=S+' тысяч'

else

if (k mod10)=1then

begin

SetLength(S, Length(S)-2);

S:=S+'на тысяча';

end

else

if (k mod10)=2then

begin

SetLength(S, length(S)-1);

S:=S+'е тысячи';

end

else

if ((k mod10)>=3)and((k mod10)<=4) then

S:=S+' тысячи'

else

S:=S+' тысяч';

N:=N mod1000;

end;

k:=N;

S:=S+' '+ConvertToWord(k);

if ((k-(k div100)*100)>10)and((k-(k div100)*100)<20) then

S:=S+' рублей'

else

if (k mod10)=1then

S:=S+' рубль'

else

if (k mod10)=2then

S:=S+' рубля'

else

if ((k mod10)>=3)and((k mod10)<=4) then

S:=S+' рубля'

else

S:=S+' рублей';

end;

if trunc(R)<>R then

begin

k:=round(frac(R)*100);

S:=S+' '+IntToStr(K);

if ((k-(k div100)*100)>10)and((k-(k div100)*100)<20) then

S:=S+' копеек'

else

if (k mod10)=1then

begin

S:=S+' копейка';

end

else

if (k mod10)=2then

begin

S:=S+' копейки';

end

else

if ((k mod10)>=3)and((k mod10)<=4) then

S:=S+' копейки'

else

S:=S+' копеек';

end

else

S:=S+' 00 копеек';

S:=Trim(S);

if S<>''then

S[1]:=AnsiUpperCase(S[1])[1];

result:=S;

end;

 

 

 

https://delphiworld.narod

DelphiWorld 6.0

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!


Защитный код
Обновить