На пустой шахматной доске в одной из клеток стоит шахматный конь. Напишите программу, которая выводит...

Тематика Информатика
Уровень 10 - 11 классы
шахматы шахматный конь алгоритмы программирование Паскаль клетки координаты задача решение код
0

На пустой шахматной доске в одной из клеток стоит шахматный конь. Напишите программу, которая выводит на экран список клеток, которые конь может достичь за один ход из данной клетки. На вход программы с клавиатуры поступают два целых числа х и у через пробел- координаты клетки, где стоит конь (1<=x,y<=8) на паскале помогите написать

avatar
задан месяц назад

2 Ответа

0

Конь в шахматах — это фигура, которая перемещается по доске особым образом. Она делает шаг в виде буквы "Г": две клетки в одном направлении и одну в перпендикулярном, или наоборот. На пустой шахматной доске конь может стоять на любой клетке, и в зависимости от его позиции, он может оказаться в одной из восьми возможных клеток за один ход, если они не выходят за пределы доски.

Чтобы решить задачу, нужно рассмотреть все возможные перемещения коня от заданной начальной позиции и проверить, остаются ли они внутри границ 8x8 шахматной доски. Давайте напишем программу на языке Паскаль, которая выполняет эту задачу.

program KnightMoves;

uses
  SysUtils;

const
  MAX_COORD = 8;
  MIN_COORD = 1;

type
  TMove = record
    dx, dy: Integer;
  end;

const
  Moves: array [1.8] of TMove = (
    (dx: 2; dy: 1), (dx: 2; dy: -1),
    (dx: -2; dy: 1), (dx: -2; dy: -1),
    (dx: 1; dy: 2), (dx: 1; dy: -2),
    (dx: -1; dy: 2), (dx: -1; dy: -2)
  );

var
  x, y, i: Integer;
  newX, newY: Integer;
  input: string;

begin
  // Чтение входных данных
  Write('Введите координаты клетки (x y): ');
  ReadLn(input);
  x := StrToInt(Trim(Copy(input, 1, Pos(' ', input) - 1)));
  y := StrToInt(Trim(Copy(input, Pos(' ', input) + 1, Length(input))));

  // Проверка корректности введенных данных
  if (x < MIN_COORD) or (x > MAX_COORD) or (y < MIN_COORD) or (y > MAX_COORD) then
  begin
    WriteLn('Координаты должны быть в диапазоне от 1 до 8.');
    Exit;
  end;

  // Перебор всех возможных ходов коня
  WriteLn('Конь может пойти в следующие клетки:');
  for i := 1 to Length(Moves) do
  begin
    newX := x + Moves[i].dx;
    newY := y + Moves[i].dy;

    // Проверка, что новая позиция находится на доске
    if (newX >= MIN_COORD) and (newX = MIN_COORD) and (newY 

avatar
ответил месяц назад
0

Программа на языке Паскаль:

program KnightMoves;

var
  x, y, newX, newY: integer;

begin
  // Ввод координат клетки с конем
  writeln('Введите координаты клетки, где стоит конь (x y):');
  readln(x, y);
  
  // Вывод списка клеток, которые конь может достичь за один ход
  writeln('Клетки, которые конь может достичь за один ход из клетки (', x, ' ', y, '):');
  
  // Верхние клетки
  newX := x + 2;
  newY := y + 1;
  if (newX >= 1) and (newX = 1) and (newY = 1) and (newX = 1) and (newY = 1) and (newX = 1) and (newY = 1) and (newX = 1) and (newY = 1) and (newX = 1) and (newY = 1) and (newX = 1) and (newY = 1) and (newX = 1) and (newY = 1) and (newX = 1) and (newY 

avatar
ответил месяц назад

Ваш ответ

Вопросы по теме