← Все вопросы

if then else в паскале, ставлю точку с запятой перед else и всё ломается

Задан 22 месяца назад1.2к просмотров2 ответа
7

Помогите, завтра сдавать! Надо проверить чётное число или нет. Пишу if, а паскаль кидает ошибку прямо на else, типа 'expected'. Я уже всё перепробовал.

var
  n: integer;
begin
  readln(n);
  if n mod 2 = 0 then
    writeln('чётное');
  else
    writeln('нечётное');
end.

Где ошибка-то?

2 ответа

12
✓ Принятый ответ — помог автору

Классическая ловушка! Перед 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. Успехов на сдаче!

5

о, это база, на этом все спотыкаются. правило: 'перед else точка с запятой не ставится'. просто вызубри и забудь)

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект