Задать вопрос
7 июля, 20:46

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

+4
Ответы (2)
  1. 7 июля, 21:43
    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 : = false

    end;

    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.
  2. 7 июля, 21:57
    0
    Возможно мое решение подойдет не для всех случаев, но вот

    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.
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Координаты двух полей шахматной доски заданы в виде двух пар чисел х1, y1 и х2, y2. На первом поле стоит ферзь, на втором - конь. ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы