• Координаты двух полей шахматной доски заданы в виде двух пар чисел х1,y1 и х2,y2. На первом поле стоит ферзь, на втором - конь. Определить, бьёт ферзь коня, конь - ферзя, или фигуры не угрожают друг другу.(Pascal ABC)

Ответы 2

  • Возможно мое решение подойдет не для всех случаев , но вотProgram w;Var x,y,x1,y1: integer;begin  writeln('Введите координаты коня');  readln(x,y);  writeln('Введите координаты ферзя');  readln(x1,y1);  if(((x+3=x1) and (x-3=x1)) or ((x-3=x1) and (y+3=y1))) then writeln('Конь и ферзь готовы к битве') else writeln('Конь и ферзь разошлись миром'); end.
    • Автор:

      bonilla
    • 6 лет назад
    • 0
  • Ответ давал уже когда-то... отклика не дождался, видимо. оно так надо было.function Knight(x1, y1, x2, y2: integer): Boolean;{ Возвращает True, если возможен переход с (x1,y1) на (x2,y2) }begin  if abs(x2 - x1) = 2 then Knight := (abs(y2 - y1) = 1)  else  if abs(x2 - x1) = 1 then Knight := (abs(y2 - y1) = 2)  else Knight := falseend;function Queen(x1, y1, x2, y2: integer): Boolean;{ Возвращает True, если возможен переход с (x1,y1) на (x2,y2) }begin  Queen := (x1 = x2) or (y1 = y2) or (abs(x2 - x1) = abs(y2 - y1))end;var  xk, yk, xq, yq: integer;begin  Write('Укажите через пробел координаты коня  [1..8]: ');  Readln(xk, yk);  Write('Укажите через пробел координаты ферзя [1..8]: ');  Readln(xq, yq);  if Knight(xk, yk, xq, yq) then Writeln('Конь бьет ферзя')  else  if Queen(xq, yq, xk, yk) then Writeln('Ферзь бьет коня')  else Writeln('Фигуры не угрожают друг другу')end.
    • Автор:

      emilia7
    • 6 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years