Отметьте положение коня на доске и все клетки, которые бьет конь - 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
завершается. - Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д