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

Задача: 

В русском языке, когда говорят о количестве лет, то после числа используют слова "год", "года" и "лет". Например, 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;beginreadln

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.  

а можно так?

Var a:real;
begin
if a=1 then writeln('god');
if (a>1) and (a<5) then writeln ('goda');
if a>5 then writeln ('let');
readln;
end.

Врядли

Если пользователь введет, скажем, 21, то ваша программа выведет на экран "21 let", что не есть правильно.

вот так

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 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.

что такое let11?

что такое let11?

let11 - переменная, больше

let11 - переменная, больше 11, при которой правильно говорить ".. лет"

а куда девать 24 года или это

а куда девать 24 года или это тоже 24 лет