PascalABC.NET 3.4.2, сборка 1859 от 08.11.2018
Внимание! Если программа не работает, обновите версию!
begin
var n := ReadInteger('n=');
if n >= 1000 then Print('одна тысяча')
else
begin
var d1 := n mod 10;
var d2 := n div 10 mod 10;
var d3 := n div 100;
var s := '';
case d3 of
1: s := 'сто';
2: s := 'двести';
3: s := 'триста';
4: s := 'четыреста';
5: s := 'пятьсот';
6: s := 'шестьсот';
7: s := 'семьсот';
8: s := 'восемьсот';
9: s := 'девятьсот';
end;
if d2 = 1 then
begin
case d1 of
0: s += ' десять';
1: s += ' одиннадцать';
2: s += ' двенадцать';
3: s += ' тринадцать';
4: s += ' четырнадцать';
5: s += ' пятнадцать';
6: s += ' шестнадцать';
7: s += ' семнадцать';
8: s += ' восемнадцать';
9: s += ' девятнадцать';
end;
TrimLeft(s).Println
end
else
begin
case d2 of
0: s += '';
2: s += ' двадцать';
3: s += ' тридцать';
4: s += ' сорок';
5: s += ' пятьдесят';
6: s += ' шестьдесят';
7: s += ' семьдесят';
8: s += ' восемьдесят';
9: s += ' девяносто';
end;
s := TrimLeft(s);
case d1 of
1: s += ' один';
2: s += ' два';
3: s += ' три';
4: s += ' четыре';
5: s += ' пять';
6: s += ' шесть';
7: s += ' семь';
8: s += ' восемь';
9: s += ' девять';
end;
TrimLeft(s).Println
end
end
end.