Паскаль. С клавиатуры вводится целое число от 1 до 1000, означающая сумму
Паскаль. С клавиатуры вводится целое число от 1 до 1000, означающая сумму в
рублях. Программа должна напечатать эту сумму прописью.
Пример: пятнадцать рублей.
1 ответ
Милена Низкова
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] := '100'; ms[2] := 'двести'; ms[3] := 'триста'; ms[4] := 'Четыреста';
ms[5] := '500'; ms[5] := '500'; ms[6] := 'шестьсот'; ms[7] := 'семьсот';
ms[8] := 'восемьсот'; ms[9] := 'девятьсот';
md[1] := '10'; md[2] := '20'; md[3] := '30'; md[4] := '40';
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] := '6'; me[7] := 'семь'; me[8] := 'восемь'; me[9] := 'девять';
Write('Введите целое число от 1 до 1000: ');
Readln(m);
if (m lt; 1) or (m gt; 1000) then Writeln('Шуточки шутим?')
else
if m = 1000 then Writeln('Одна тыща ' + s3)
else
begin
сотки
n := m div 100;
if n gt; 0 then
begin
Write(ms[n]);
flag := true
end;
10-ки
m := m mod 100;
if m = 0 then Writeln(' ', s3)
else
begin
if (m gt; 10) and (m lt; 20) then
begin
if flag then Write(' ');
Writeln(m1[m], ' ', s3)
end
else
if m gt; 0 then
begin
n := m mod 10;
m := m div 10;
if m gt; 0 then
begin
if flag then Write(' ') else flag := true;
Write(md[m])
end;
if n lt;gt; 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
триста четырнадцать рублей
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] := '100'; ms[2] := 'двести'; ms[3] := 'триста'; ms[4] := 'Четыреста';
ms[5] := '500'; ms[5] := '500'; ms[6] := 'шестьсот'; ms[7] := 'семьсот';
ms[8] := 'восемьсот'; ms[9] := 'девятьсот';
md[1] := '10'; md[2] := '20'; md[3] := '30'; md[4] := '40';
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] := '6'; me[7] := 'семь'; me[8] := 'восемь'; me[9] := 'девять';
Write('Введите целое число от 1 до 1000: ');
Readln(m);
if (m lt; 1) or (m gt; 1000) then Writeln('Шуточки шутим?')
else
if m = 1000 then Writeln('Одна тыща ' + s3)
else
begin
сотки
n := m div 100;
if n gt; 0 then
begin
Write(ms[n]);
flag := true
end;
10-ки
m := m mod 100;
if m = 0 then Writeln(' ', s3)
else
begin
if (m gt; 10) and (m lt; 20) then
begin
if flag then Write(' ');
Writeln(m1[m], ' ', s3)
end
else
if m gt; 0 then
begin
n := m mod 10;
m := m div 10;
if m gt; 0 then
begin
if flag then Write(' ') else flag := true;
Write(md[m])
end;
if n lt;gt; 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
триста четырнадцать рублей
Valentina Kuzmicheva
О-го! Вот это ж Для вас спасибо огроменное!
Владимир
А короче не выходит... Можно было чуток процедурами сэкономить.. но и только
Варвара Меликеетова
Да я знаю.) Правдиво разговаривая, просто не веровал, что кому-то будет не лень копаться с таковой большой чужой задачей. Еще раз спасибо!
Вячеслав Юскович
Я особо не возился, просто брал свою, которая в Экселе работает, на VBA написанная, выбросил оттуда тысячи, миллионы и млрд и переписал на Паскаль.
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
10) Килограмм конфет дороже килограмма печенья на 52 р. За 8
Математика.
Во сколько раз число атомов кислорода в земной коре больше числа
Химия.
Составить монолог от имени дневника двоечника 7-10 предложений
Русский язык.
Рассматривая литературный язык как сложное взаимодействие книжного языка и разговорного,В.И.Чернышёв горячо
Разные вопросы.
Арабы входят в __________________ групп народов. Местом расселения арабов с незапамятных
Разные вопросы.
Грузовой автомобиль марки краз за одну поездку может доставить 7.500 кирпичей
Математика.
Облако тегов