Добавление правильного окончания (слова) к числу

Задача

 

В русском языке, когда говорят о количестве лет, то после числа используют слова "год", "года" и "лет". Например, 1 год, но 10 лет или 3 года.

Требуется написать программу, которая в зависимости от числа добавляет правильное окончание.

 

Решение

 

Слово "год" добавляется ко всем числам, последняя (или единственная) цифра которых равна 1.
"Года" для оканчивающихся на 2, 3, 4. Во всех остальных случаях используется слово "лет".
Числа 11, 12, 13, 14 (или имеющие такой остаток от деления на 100) имеют "окончание" лет.

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

Для решения этой задачи удобно использовать множества.

Программа на языке Паскаль: 

 

var
    let, let11, god, goda: set of byte;
    age, n: byte;
begin
    let := [0,5,6,7,8,9];
    let11 := [11,12,13,14];
    god := [1];
    //goda := [2,3,4];
    write('Введите количество лет: ');
    readln(age);
    if (age in let11) or (age mod 100 in let11) then
        writeln(age, ' лет')
    else begin
        n := age mod 10;
        if n in let then
            writeln(age, ' лет')
        else
            if n in god then
                writeln(age, ' год')
            else
                writeln(age, ' года ')
    end;
 
readln;
end.

 

Тема

Множества и интервалы

Уровень

Простые задачи

Комментарии

Var a:integer;
begin
readln (a);
if (a mod 10=1) and (a<>11) then writeln(a,' год') else begin
if (a>1) and (a<5) then writeln (a,' года') else 
if a>5 then writeln (a,' лет'); end;
end.

var age,i:integer;
 
 
begin
  readln(age);
  if (age mod 10 =1) and (age<>11)
     then writeln(age,' год')
     else
         if ((age>=5) and (age<=19)) or (age mod 10 >4) or (age mod 10 =0)
            then writeln(age,' лет')
            else writeln(age,' года');
  readln;
end.  

Добавить комментарий