Домашнее задание Turbo Pascal Проблема: почему ошибка 57 появляется в строке, которой не должно было быть?

Я учусь в 1 классе гимназии. Недавно мне нужно было выполнить задание на Турбо Паскале, и вот что произошло:

var
   a,b,x,y,n:integer;
begin
   readln(a,b,x,y);
   if a<b and x<y then n:=a+y;
   if a<b and x>y then n:=a+y;
   if a>b and x<y then n:=b+x;
   if a>b and x>y then n:=b+x;
   writeln(n);
end.

Ошибка 57 появилась во второй строке if между y и ‹.

Может кто-нибудь объяснить, почему это произошло?


person Endtower    schedule 25.01.2021    source источник
comment
Дикое предположение: паскаль and связывает сильнее, чем <. Добавьте круглые скобки вокруг предложений something<something.   -  person dratenik    schedule 25.01.2021
comment
Кроме того, пожалуйста, не публикуйте код в виде изображений. (недоступный для поиска, вспомогательные технологии и т. д.)   -  person dratenik    schedule 25.01.2021


Ответы (1)


В веб-источнике указано, что Error 57 равно "Then" Expected, и поскольку вы не окружили сравнение If круглыми скобками, компилятор ожидает, что следующим словом должно быть then. Даже если ошибка не такая, как сказал источник, вам все равно нужно заключить ваши If сравнения в круглые скобки, если у вас есть более одного сравнения в одном if

if (a<b) and (x<y) then n:=a+y;

В противном случае компилятор думает, что вы хотите, чтобы сравнение было

a < b and x

Что проверит, меньше ли a, чем результат b ANDed с x

person Blurry Sterk    schedule 25.02.2021