По заданными координатам ферзя показать поля доски, которые находятся под боем (доска n*n) - Free Pascal

Узнай цену своей работы

Формулировка задачи:

создать программу ,что за заданными координатами ферзя показывает поля доски,которые находятся под боем(розмер доски n*n,где n<20,места под боем можна отметить символом"*")

Решение задачи: «По заданными координатам ферзя показать поля доски, которые находятся под боем (доска n*n)»

textual
Листинг программы
program yarokMAN;
{$APPTYPE CONSOLE}
uses SysUtils;
var mas:array [1..20,1..20] of Integer;
    x,y,i,j,n:Integer;
begin
 Write('Enter size of array = ');Readln(n);
 Write('Enter point [-] = ');Readln(y);
 Write('Enter point [|] = ');Readln(x);
 Writeln('  Array');
for i:=1 to n do
  begin
   for j:=1 to n do
     begin
       mas[i,j]:=0;
       if (x=i) or (y=j) or (abs(i-x)=abs(j-y)) then mas[i,j]:=1;
     end;
  end;
  mas[x,y]:=8;
 for i:=1 to n do
  begin
    for j:=1 to n do
      begin
        Write(mas[i,j],' ');
      end;
    Writeln;
  end;
Readln;
end.

Объяснение кода листинга программы

  1. Объявлены переменные: — mas - двумерный массив (array) чисел типа Integer (SysUtils) размером n*n; — x, y, i, j - целочисленные переменные (Integer); — n - переменная для хранения размера массива (Integer).
  2. Запрашивается размер массива (n) и координаты точки (x, y) под которой находится ферзь.
  3. В цикле заполняется массив значением 0.
  4. Если по заданным координатам (x, y) или по горизонтали/вертикали от ферзя до края доски есть свободное поле (значение 0), то оно помечается как поле под боем (значение 1).
  5. Помечается поле под боем (mas[x,y]:=8).
  6. В цикле выводятся на экран значения всех полей массива.
  7. Запрашивается ввод для завершения работы программы.

Оцени полезность:

11   голосов , оценка 3.727 из 5
Похожие ответы