Определить на какие поля шахматной доски может пойти конь с заданными координатами - Pascal

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

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

Доброго времени суток! Вот,сделал программу(ну как сделал,собрал по кускам,как франкинштейна).
Листинг программы
  1. var y,x,i:integer;
  2. j,x1:char;
  3. a:array[1..8,'a'..'h'] of char;
  4. begin
  5. writeln('Введите координаты по горизонтали');
  6. readln(x1);
  7. writeln( 'Введите координаты по вертикали');
  8. readln(y);
  9. case x1 of
  10. 'a': x:=1;
  11. 'b': x:=2;
  12. 'c': x:=3;
  13. 'd': x:=4;
  14. 'e': x:=5;
  15. 'f': x:=6;
  16. 'g': x:=7;
  17. 'h': x:=8;
  18. end;
  19. writeln(' A B C D E F G H');
  20. for i:=8 downto 1 do writeln(i);
  21. for i:=1 to 8 do
  22. for j:='a' to 'h' do
  23. if abs(i-y)*abs(ord(j)-ord(x1))=2 then a[i,j]:='X'
  24. else a[i,j]:='0';
  25. a[y,x1]:='K';
  26. for i:=8 downto 1 do
  27. begin
  28. for j:='a' to 'h' do
  29. write('', a[i,j]:2);
  30. writeln;
  31. end;
  32. end.
И вот что выдает паскаль: Введите координаты по горизонтали d Введите координаты по вертикали 2 A B C D E F G H 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 X 0 0 0 0 X 0 0 0 X 0 0 0 0 0 K 0 0 0 0 0 X 0 0 0 X 0 0 Вот как сделать так,чтобы обозначения по вертикали и горизонтали,были на одном уровне с импровезированной шахматной доской? Заранее большое спасибо!

Решение задачи: «Определить на какие поля шахматной доски может пойти конь с заданными координатами»

textual
Листинг программы
  1. var y, i: Integer;
  2.     j, x: char;
  3.     a: array[1..8, 'a'..'h'] of Char;
  4. begin
  5.   Writeln('Введите координаты по горизонтали');
  6.   Readln(x);
  7.   Writeln('Введите координаты по вертикали');
  8.   Readln(y);
  9.   Write('   ');
  10.   for j := 'A' to 'H' do Write(j, ' ');
  11.   Writeln;
  12.   for i := 1 to 8 do
  13.    for j := 'a' to 'h' do
  14.     if abs(i-y) * abs(ord(j)-ord(x)) = 2 then a[i, j] := 'X'
  15.     else a[i, j] := '0';
  16.   a[y, x] := 'K';
  17.   for i := 8 downto 1 do
  18.   begin
  19.     Write(i, ' ');
  20.     for j := 'a' to 'h' do Write(a[i, j]:2);
  21.     Writeln;
  22.   end;
  23. end.

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

  1. Объявляются переменные:
    • y и i типа Integer для хранения координат по вертикали и для использования в циклах;
    • j и x типа char для хранения координат по горизонтали и для использования в циклах;
    • a - двумерный массив размером 8x8, где каждый элемент массива может содержать символы от 'a' до 'h'.
  2. Выводится сообщение Введите координаты по горизонтали.
  3. Вводится значение переменной x.
  4. Выводится сообщение Введите координаты по вертикали.
  5. Вводится значение переменной y.
  6. Выводится строка с буквами от 'A' до 'H'.
  7. Для каждого i от 1 до 8 и для каждого j от 'a' до 'h' проверяется условие:
    • Если разница между значениями i-y умноженной на разницу между ord(j)-ord(x) равна 2, то значение в массиве a по координатам i и j устанавливается как 'X', в противном случае устанавливается как '0'.
  8. В массиве a по координатам y и x устанавливается символ 'K'.
  9. Для i от 8 до 1 выполняется цикл:
    • Выводится значение i.
    • Для j от 'a' до 'h' выводится значение элементов массива a[i, j] с отступами.
  10. Программа завершается.

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


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

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

13   голосов , оценка 3.692 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы