Задать вопрос
20 мая, 20:08

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

+2
Ответы (2)
  1. 20 мая, 20:21
    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. 20 мая, 20:46
    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. На первом поле стоит ферзь, на втором - конь. ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Координаты двух полей шахматной доски заданы в виде двух пар чисел x1 y1 и x2 y2 на первом поле стоит ферзь, на втором-конь. определить, бьет ферзь коня, конь ферзя, или фигуру не угрожают друг другу.
Ответы (1)
Помогите с PascalABC даны координаты двух фигур шахматной доски, координаты ферзя x1, y1 и координаты еще какой-то фигуры x2, y2 (целые числа, лежащие в диапазоне 1-8). Проверить истинность высказывания: "Ферзь за один ход срубит эту фигуру".
Ответы (1)
Решить задачу на языке Питон " Шахматный ферзь ходит по диагонали, горизонтали или вертикали. Даны две различные клетки шахматной доски, определите, может ли ферзь попасть с первой клетки на вторую одним ходом.
Ответы (1)
Делфи. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит 8: первое число - номер вертикали (при счете слева направо), второе - номер горизонтали (при счете снизу-вверх).
Ответы (1)
Поле шахматной доски определяется парой целых чисел - но - мером строки (от 1 до 8) и номером столбца (от 1 до 8). Пусть заданы два поля: (k, l) и (m, n).
Ответы (1)