if then else в паскале, ставлю точку с запятой перед else и всё ломается
Помогите, завтра сдавать! Надо проверить чётное число или нет. Пишу if, а паскаль кидает ошибку прямо на else, типа 'expected'. Я уже всё перепробовал.
var
n: integer;
begin
readln(n);
if n mod 2 = 0 then
writeln('чётное');
else
writeln('нечётное');
end.
Где ошибка-то?
2 ответа
Классическая ловушка! Перед else нельзя ставить точку с запятой. Для паскаля ; это конец всей конструкции if, и когда он видит else — он уже не понимает, к чему оно. Убери ; после первого writeln:
var
n: integer;
begin
readln(n);
if n mod 2 = 0 then
writeln('чётное')
else
writeln('нечётное');
end.
Видишь — после writeln('чётное') точки с запятой НЕТ, а после else уже ставим (там конец).
Правило простое: then ... else это одно целое, внутри разрывать ; нельзя. Если веток несколько команд — оборачивай в begin ... end, тогда ; ставится внутри между командами, но не прямо перед else. Успехов на сдаче!
о, это база, на этом все спотыкаются. правило: 'перед else точка с запятой не ставится'. просто вызубри и забудь)