Отметьте положение коня на доске и все клетки, которые бьет конь - Turbo Pascal
Формулировка задачи:
На шахматной доске стоит конь. Отметьте положение коня на доске и все клетки, которые бьет конь. Клетку, где стоит конь, отметьте буквой “K”, клетки, которые бьет конь, отметьте символами “*”, остальные клетки заполните точками.
Входные данные
Программа получает на вход координаты коня на шахматной доске в шахматной нотации (то есть в виде “e4”, где сначала записывается номер столбца (буква от “a” до “h”, слева направо), затем номеру строки (цифра от 1 до 8, снизу вверх).
Выходные данные
Выведите на экран изображение доски.
Примеры
входные данные
b6
выходные данные
* . * . . . . . . . . * . . . . . K . . . . . . . . . * . . . . * . * . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Решение задачи: «Отметьте положение коня на доске и все клетки, которые бьет конь»
textual
Листинг программы
var y,i:integer; x,j:char; a:array[1..8,'a'..'h'] of char; begin repeat write('Введите букву вертикали, на которой стоит конь от a до h x='); readln(x); until x in ['a'..'h']; repeat write('Введите номер горизонтали, на которой стоит конь от 1 до 8 y='); readln(y); until y in [1..8]; for i:=1 to 8 do for j:='a' to 'h' do if abs(i-y)*abs(ord(j)-ord(x))=2 then a[i,j]:='*' else a[i,j]:='.'; a[y,x]:='K'; for i:=8 downto 1 do begin for j:='a' to 'h' do write(a[i,j]:2); writeln; end; end.
Объяснение кода листинга программы
- Создается переменная
y
типаinteger
и инициализируется значением 0. - Создается переменная
i
типаinteger
и инициализируется значением 0. - Создается переменная
x
типаchar
и инициализируется значением 'a'. - Создается переменная
j
типаchar
и инициализируется значением 'a'. - Создается массив
a
типаarray[1..8,'a'..'h'] of char
, который представляет собой двумерный массив символов размером 8x8. - Запускается цикл
repeat
, который будет выполняться до тех пор, пока значение переменнойx
не станет равным значению переменнойa[y,x]
. - Внутри цикла
repeat
выполняется чтение значения переменнойx
с помощью функцииreadln()
. - Запускается еще один цикл
repeat
, который будет выполняться до тех пор, пока значение переменнойy
не станет равным значению переменнойa[y,x]
. - Внутри цикла
repeat
выполняется чтение значения переменнойy
с помощью функцииreadln()
. - Для каждой строки массива
a
(от 1 до 8) выполняется циклfor i:=1 to 8 do
. - Внутри цикла
for i:=1 to 8 do
выполняется циклfor j:='a' to 'h' do
. - Внутри внутреннего цикла
for j:='a' to 'h' do
проверяется условиеabs(i-y)*abs(ord(j)-ord(x))=2
. Если условие истинно, то в соответствующую ячейку массиваa
записывается символ '*', иначе записывается символ '.'. - После завершения внутреннего цикла
for j:='a' to 'h' do
для каждой строки массиваa
записывается символ 'K'. - Запускается еще один цикл
for i:=8 downto 1 do
. - Внутри цикла
for i:=8 downto 1 do
выполняется циклfor j:='a' to 'h' do
. - Для каждой ячейки массива
a
(от 1 до 8) выводится символ, соответствующий этой ячейке, с помощью функцииwrite()
. - После завершения внутреннего цикла
for j:='a' to 'h' do
для каждой строки массиваa
выводится символwriteln()
. - Цикл
repeat
завершается. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д