Паскаль. С клавиатуры вводится целое число от 1 до 1000, обозначающая сумму в рублях. Программа должна напечатать эту сумму прописью.Пример: пятнадцать рублей.
Var
m, n: integer;
s1, s2, s3: string;
ms: array[1..9] of string;
md: array[1..9] of string;
m1: array[11..19] of string;
me: array[1..9] of string;
flag: boolean;
begin
flag := false; { Пока ничего не выведено }
s1 := рубль;
s2 := рубля;
s3 := рублей;
ms[1] := сто; ms[2] := двести; ms[3] := триста; ms[4] := Четыреста;
ms[5] := пятьсот; ms[5] := пятьсот; ms[6] := шестьсот; ms[7] := семьсот;
ms[8] := восемьсот; ms[9] := девятьсот;
md[1] := десять; md[2] := двадцать; md[3] := тридцать; md[4] := сорок;
md[5] := пятьдесят; md[6] := шестьдесят; md[7] := семьдесят;
md[8] := восемьдесят; md[9] := девяносто;
m1[11] := одиннадцать; m1[12] := двенадцать; m1[13] := тринадцать;
m1[14] := четырнадцать; m1[15] := пятнадцать; m1[16] := шестнадцать;
m1[17] := семнадцать; m1[18] := восемнадцать; m1[19] := девятнадцать;
me[1] := один; me[2] := два; me[3] := три; me[4] := четыре; me[5] := пять;
me[6] := шесть; me[7] := семь; me[8] := восемь; me[9] := девять;
Write(Введите целое число от 1 до 1000: );
Readln(m);
if (m 1000) then Writeln(Шутки шутим?)
else
if m = 1000 then Writeln(Одна тысяча + s3)
else
begin
{ сотни }
n := m div 100;
if n > 0 then
begin
Write(ms[n]);
flag := true
end;
{ десятки }
m := m mod 100;
if m = 0 then Writeln( , s3)
else
begin
if (m > 10) and (m begin
if flag then Write( );
Writeln(m1[m], , s3)
end
else
if m > 0 then
begin
n := m mod 10;
m := m div 10;
if m > 0 then
begin
if flag then Write( ) else flag := true;
Write(md[m])
end;
if n 0 then
begin
{ единицы }
if flag then Write( );
Write(me[n], );
case n of
1: Writeln(s1);
2..4: Writeln(s2);
else Writeln( s3)
end
end
else Writeln( , s3)
end
end
end
end.
Тестовое решение:
Введите целое число от 1 до 1000: 314
триста четырнадцать рублей
Форма вопроса доступна на