Редянов Денис
Code: |
function CifrToStr(Cifr: string; Pr: Integer; Padeg: Integer): string; {Функция возвращает прописью 1 цифры признак 3-единицы 2-десятки 1-сотни 4-11-19
Padeg - 1-нормально 2- одна, две } var i: Integer; begin
i := StrToInt(Cifr); if Pr = 1then case i of 1: CifrToStr := 'сто'; 2: CifrToStr := 'двести'; 3: CifrToStr := 'триста'; 4: CifrToStr := 'четыреста'; 5: CifrToStr := 'пятьсот'; 6: CifrToStr := 'шестьсот'; 7: CifrToStr := 'семьсот'; 8: CifrToStr := 'восемьсот'; 9: CifrToStr := 'девятьсот'; 0: CifrToStr := ''; end elseif Pr = 2then case i of 1: CifrToStr := ''; 2: CifrToStr := 'двадцать'; 3: CifrToStr := 'тридцать'; 4: CifrToStr := 'сорок'; 5: CifrToStr := 'пятьдесят'; 6: CifrToStr := 'шестьдесят'; 7: CifrToStr := 'семьдесят'; 8: CifrToStr := 'восемьдесят'; 9: CifrToStr := 'девяносто'; 0: CifrToStr := ''; end elseif Pr = 3then case i of 1: if Padeg = 1then CifrToStr := 'один' else CifrToStr := 'одна'; 2: if Padeg = 1then CifrToStr := 'два' else CifrToStr := 'две'; 3: CifrToStr := 'три'; 4: CifrToStr := 'четыре'; 5: CifrToStr := 'пять'; 6: CifrToStr := 'шесть'; 7: CifrToStr := 'семь'; 8: CifrToStr := 'восемь'; 9: CifrToStr := 'девять'; 0: CifrToStr := ''; end elseif Pr = 4then case i of 1: CifrToStr := 'одиннадцать'; 2: CifrToStr := 'двенадцать'; 3: CifrToStr := 'тринадцать'; 4: CifrToStr := 'четырнадцать'; 5: CifrToStr := 'пятнадцать'; 6: CifrToStr := 'шестнадцать'; 7: CifrToStr := 'семнадцать'; 8: CifrToStr := 'восемнадцать'; 9: CifrToStr := 'девятнадцать'; 0: CifrToStr := 'десять';
end; end;
function Rasryad(K: Integer; V: string): string; {Функция возвращает наименование разряда в зависимости от последних 2 цифр его} var j: Integer; begin
j := StrToInt(Copy(v, Length(v), 1)); if (StrToInt(Copy(v, Length(v) - 1, 2)) > 9) and (StrToInt(Copy(v, Length(v) - 1, 2)) < 20) then case K of 0: Rasryad := ''; 1: Rasryad := 'тысяч'; 2: Rasryad := 'миллионов'; 3: Rasryad := 'миллиардов'; 4: Rasryad := 'триллионов'; end else case K of 0: Rasryad := ''; 1: case j of 1: Rasryad := 'тысяча'; 2..4: Rasryad := 'тысячи'; else Rasryad := 'тысяч'; end; 2: case j of 1: Rasryad := 'миллион'; 2..4: Rasryad := 'миллионa'; else Rasryad := 'миллионов'; end; 3: case j of 1: Rasryad := 'миллиард'; 2..4: Rasryad := 'миллиарда'; else Rasryad := 'миллиардов'; end; 4: case j of 1: Rasryad := 'триллион'; 2..4: Rasryad := 'триллиона'; else Rasryad := 'триллионов'; end; end; end;
function GroupToStr(Group: string; Padeg: Integer): string; {Функция возвращает прописью 3 цифры} var i: Integer;
S: string; begin
S := ''; if (StrToInt(Copy(Group, Length(Group) - 1, 2)) > 9) and (StrToInt(Copy(Group, Length(Group) - 1, 2)) < 20) then begin if Length(Group) = 3then S := S + ' ' + CifrToStr(Copy(Group, 1, 1), 1, Padeg); S := S + ' ' + CifrToStr(Copy(Group, Length(Group), 1), 4, Padeg); end else for i := 1to Length(Group) do S := S + ' ' + CifrToStr(Copy(Group, i, 1), i - Length(Group) + 3, Padeg); GroupToStr := S; end;
{Функция возвращает сумму прописью} function RubToStr(Rubs: Currency; Rub, Kop: string): string; var i, j: Integer;
R, K, S: string; begin
S := CurrToStr(Rubs); S := Trim(S); if Pos(',', S) = 0then begin R := S; K := '00'; end else begin R := Copy(S, 0, (Pos(',', S) - 1)); K := Copy(S, (Pos(',', S) + 1), Length(S)); end;
S := ''; i := 0; j := 1; while Length(R) > 3do begin if i = 1then j := 2 else j := 1; S := GroupToStr(Copy(R, Length(R) - 2, 3), j) + ' ' + Rasryad(i, Copy(R, Length(R) - 2, 3)) + ' ' + S; R := Copy(R, 1, Length(R) - 3); i := i + 1; end; if i = 1then j := 2 else j := 1; S := Trim(GroupToStr(R, j) + ' ' + Rasryad(i, R) + ' ' + S + ' ' + Rub + ' ' + K + ' ' + Kop); S := ANSIUpperCase(Copy(S, 1, 1)) + Copy(S, 2, Length(S) - 1); RubToStr := S; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!