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