Отметьте положение коня на доске и все клетки, которые бьет конь - 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.

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

  1. Создается переменная y типа integer и инициализируется значением 0.
  2. Создается переменная i типа integer и инициализируется значением 0.
  3. Создается переменная x типа char и инициализируется значением 'a'.
  4. Создается переменная j типа char и инициализируется значением 'a'.
  5. Создается массив a типа array[1..8,'a'..'h'] of char, который представляет собой двумерный массив символов размером 8x8.
  6. Запускается цикл repeat, который будет выполняться до тех пор, пока значение переменной x не станет равным значению переменной a[y,x].
  7. Внутри цикла repeat выполняется чтение значения переменной x с помощью функции readln().
  8. Запускается еще один цикл repeat, который будет выполняться до тех пор, пока значение переменной y не станет равным значению переменной a[y,x].
  9. Внутри цикла repeat выполняется чтение значения переменной y с помощью функции readln().
  10. Для каждой строки массива a (от 1 до 8) выполняется цикл for i:=1 to 8 do.
  11. Внутри цикла for i:=1 to 8 do выполняется цикл for j:='a' to 'h' do.
  12. Внутри внутреннего цикла for j:='a' to 'h' do проверяется условие abs(i-y)*abs(ord(j)-ord(x))=2. Если условие истинно, то в соответствующую ячейку массива a записывается символ '*', иначе записывается символ '.'.
  13. После завершения внутреннего цикла for j:='a' to 'h' do для каждой строки массива a записывается символ 'K'.
  14. Запускается еще один цикл for i:=8 downto 1 do.
  15. Внутри цикла for i:=8 downto 1 do выполняется цикл for j:='a' to 'h' do.
  16. Для каждой ячейки массива a (от 1 до 8) выводится символ, соответствующий этой ячейке, с помощью функции write().
  17. После завершения внутреннего цикла for j:='a' to 'h' do для каждой строки массива a выводится символ writeln().
  18. Цикл repeat завершается.
  19. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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