Задачи по Pascal. Дописать слово «рублей» в правильной форме

Задачи по Pascal

Условие задачи : Написать программу, которая после введённого с клавиатуры числа (от 1 до 999), обозначающего денежную единицу, дописывает слово «рубль» в правильной форме. Например, 12 рублей, 21 рубль и т.д.

Сложность : легкая .

Довольно интересная задача на мой взгляд, хоть и легкая. Для начала стоит подумать как вообще правильно формируется слово рубль в зависимости от цифры.

Давайте сначала : 1 рубль , 2 — 4 рубля, 5 — 20 рублей , 21 рубль, 22 — 24 рубля, 25 — 30 рублей.

Думаю что вы увидели как это всё меняется. Теперь давайте напишем эту программу.

Первым делом создадим каркас и объявим переменные под числа.

uses crt ; 
var 
    number, ost : integer ;
begin

end.

Дальше давайте попросим пользователя ввести число от 1 до 999 :

write('Введите число от 1 до 999 : '); readln(number);
if (number < 1) or (number > 999) then Halt ;

Тут же я прописал условие на тот случай если пользователь введет число больше чем 999 или меньше чем 1.
Halt у нас завершает программу досрочно.

И сразу же давайте нашей переменной ost присвоим остаток от деления, т.к. именно по остатку мы будем определять какое слово добавлять, но есть и исключение дальше вы увидите какое :

ost := number mod 10 ;

И теперь пишем основное условие :

if (number >= 5) and (number <= 20) or (ost >= 5) and (ost <= 9) then 
        writeln(number, ' рублей')
else 
        if ost = 1 then
                writeln(number, ' рубль')
        else writeln(number, ' рубля');

Может есть и какой-то другой способ записи этого условия но я сделал такой. Что мы тут делаем ?

Для начала мы проверяем числа от 5 до 20 ( именно сами числа ) так как только у этого промежутка будут одинаковые слова т.е. слово «рублей», а дальше нам уже будут встречаться такие слова только у тех цифр которые кончаются на 5 .. 9 вот их мы в первое условие и добавляем.

Дальше если первое условие у нас не прошло , т.е. значит что у нас число не от 5 до 20 и не кончается на цифру от 5 .. 9 , мы проверяем кончается ли оно на 1 , если да то выводим слово рубль, если нет то добавляем уже слово «рубля».

Вот и всё . Весь код программы :

uses crt ; 
var 
    ost,number : integer ;
begin
clrscr; {очищаем экран}
write('Введите число от 1 до 999 : '); readln(number);
if (number < 1) or (number > 999) then Halt ;

ost  := number mod 10 ;

if (number >= 5) and (number <= 20) or (ost >= 5) and (ost <= 9) then 
        writeln(number, ' рублей')
else 
        if ost = 1 then
                writeln(number, ' рубль')
        else writeln(number, ' рубля');
        
readln; {чтобы программа не закрывалась}       
end.

cyber
Оцените автора
CyberLesson | Быстро освоить программирование Pascal и C++. Решение задач Pascal и C++
Добавить комментарий