Проблемы с логикой в Паскале
Сделал программу которая будет получать возраст, а потом уточнять что это год, года, лет.
var a,b:integer;
begin
writeln('Каков ваш возраст? ');
readln(a);
if (a=11) or (a=12) or (a=13) or (a=14) then
begin
writeln('Ваш возраст ',a,' лет');
end
else
b:=a mod 10;
case b of
1: writeln('Ваш возраст ',a,' год');
2,3,4: writeln('Ваш возраст ',a,' года');
0,5,6,7,8,9: writeln('Ваш возраст ',a,' лет');
end;
readln();
end.

Когда ввожу 21, 22 и любые другие цифры кроме 11, 12, 13 и 14, то он пишет одну строчку с ответом. А когда ввожу именно 11, 12, 13 и 14 то он мне два раза пишет один и тот же ответ! Почему он так делает, я ведь поставил "else" , и как это исправить?

  • var
    a: integer;
    begin
    writeln('Каков ваш возраст? ');
    readln(a);
    if (a=11) or (a=12) or (a=13) or (a=14) then
    writeln('Ваш возраст ',a,' лет')
    else
    case a mod 10 of
    1: writeln('Ваш возраст ',a,' год');
    2,3,4: writeln('Ваш возраст ',a,' года');
    0,5,6,7,8,9: writeln('Ваш возраст ',a,' лет');
    end;
    readln;
    end.
    Источник: переменная b не нужна
  • А ты не забыл begin-end после else?
  • А else Заканчивается уже b:= a mod 10;Правда, неожиданно? И так не только в Паскале...