Паскаль. С клавиатуры вводится целое число от 1 до 1000, обозначающая сумму в
10-11 класс
|
рублях. Программа должна напечатать эту сумму прописью.
Пример: пятнадцать рублей.
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 < 1) or (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 < 20) then
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
триста четырнадцать рублей
О-го! Вот это ж Вам спасибо огроменное!
А короче не получается... Можно было чуть процедурами сэкономить.. но и только
Да я знаю.) Честно говоря, просто не верил, что кому-то будет не лень возиться с такой объемной чужой задачей. Еще раз спасибо!
Я особо не возился, просто взял свою, которая в Экселе работает, на VBA написанная, выкинул оттуда тысячи, миллионы и миллиарды и переписал на Паскаль.
Другие вопросы из категории
философской концепции ее можно будет отнести?
вычесть a, ко всем отрицательным элементам прибавить b. В паскале. Значение a b n вводятся с клавиатуры
Читайте также
языков программирования алгоритм,позволяющий найти среднее арифметическое нечетных трехзначных чисел,записанных в этом массиве.если ни одного такого числа нет,нужно вывести сообщение об этом.
2)дан целочисленный массив из 30 элементов.элементы массива могут принимать целые значения от 0 до 100.опишите на русском языке или на одном из языков программирования алгоритм,позволяющий найти и вывести произведение элементов массива,которые имеют четное значение и не оканчиваются на 0.
2)вывести на экран числа от 2 до 9 с шагом 0,2
2.Вывести на экран 10 строк, содержащие символ *, причем количество * в каждой строке должно быть равно номеру строки.
3.Пользователем вводится 2 целых числа. Вывести на экран сумму положительных четных чисел, находящихся в границах диапазона, указанного пользователем.
4. В результате работы программы формируется массив, состоящий из 10 элементов и заполненный случайными числами от 0 до 100. Вывести на экран этот же массив в порядке возрастания.
5.Вводится строка, содержащая буквы и цифры разного регистра (т.е. строчные и прописные буквы). В результате работы программы на экран выводится строка следующего вида: цифры в порядке возрастания, строчные буквы по алфавиту, прописные буквы по алфавиту.
«выходной»).
Программа 13. Пользователь вводит действительное число. Требуется определить: 1. положительное это число или отрицательное; 2. целое это число или нецелое; 3. четное это число или нечетное; Выбор варианта определяется пользователем.
набора «А, В, Е, К, М, Н, О, Р, С, Т, У, Х»), номер (трехзначное число от 000 до 999). При создании базы данных автомобильных номеров Петя решил хранить каждый номер в виде массива из 8 символов (два символа на номер региона, три символа на серию и три символа на номер), кодируя каждый символ с помощью однобайтной кодировки ASCII. Вася решил уменьшить объем хранимых данных и принял решение хранить каждый номер в виде трех чисел – одно число для номера региона, одно число для серии (представив все возможные серии в виде натуральных чисел) и одно число для номера. Каждое число Вася будет хранить отдельно, используя для его кодирования минимально возможное число бит. На сколько бит уменьшится объем памяти, необходимый для хранения одного произвольного номера, в варианте кодирования Васи по сравнению с вариантом кодирования Пети? В ответе укажите целое число.