begin
writeln('Координаты первого поля:');
write(' x1 = ');
readln(x1);
write(' y1 = ');
readln(y1);
writeln('Координаты второго поля:');
write(' x2 = ');
readln(x2);
write(' y2 = ');
readln(y2);
writeln;
{ Поскольку Ферзь ходит и как ладья (горизонталь - вертикаль),
и как слон (диагональ), нам надо объединить эти направления.
Как было сказано в задаче boolean36, для успешного перехода
ладьей необходимо совпадение или координат x, или координат
y. Поэтому выражение f будет состоять в том, что или x1=x2,
или y1=y2: }
f := (x1 = x2)or(y1 = y2);
{ Но ферзь может ходить и как слон, поэтому выражение g будет
состоять в том, что разницы соответствующих координат по
модулю равны между собой (см. предыдущую задачу boolean38):}
g := abs(x1 - x2) = abs(y1 - y2);
{ Таким образом, поскольку ферзь ходит или как ладья, или как
слон, то выражения f и g объединим логическим оператором or
("или" - или ладья, или слон):}
writeln(f or g);
readln
end.
x1, y1, x2, y2: byte;
f, g: boolean;
begin
writeln('Координаты первого поля:');
write(' x1 = ');
readln(x1);
write(' y1 = ');
readln(y1);
writeln('Координаты второго поля:');
write(' x2 = ');
readln(x2);
write(' y2 = ');
readln(y2);
writeln;
{ Поскольку Ферзь ходит и как ладья (горизонталь - вертикаль),
и как слон (диагональ), нам надо объединить эти направления.
Как было сказано в задаче boolean36, для успешного перехода
ладьей необходимо совпадение или координат x, или координат
y. Поэтому выражение f будет состоять в том, что или x1=x2,
или y1=y2: }
f := (x1 = x2)or(y1 = y2);
{ Но ферзь может ходить и как слон, поэтому выражение g будет
состоять в том, что разницы соответствующих координат по
модулю равны между собой (см. предыдущую задачу boolean38):}
g := abs(x1 - x2) = abs(y1 - y2);
{ Таким образом, поскольку ферзь ходит или как ладья, или как
слон, то выражения f и g объединим логическим оператором or
("или" - или ладья, или слон):}
writeln(f or g);
readln
end.