Определить на какие поля шахматной доски может пойти конь с заданными координатами - Pascal
Формулировка задачи:
Доброго времени суток!
Вот,сделал программу(ну как сделал,собрал по кускам,как франкинштейна).
И вот что выдает паскаль:
Введите координаты по горизонтали
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
Вот как сделать так,чтобы обозначения по вертикали и горизонтали,были на одном уровне с импровезированной шахматной доской?
Заранее большое спасибо!
Листинг программы
- var y,x,i:integer;
- j,x1:char;
- a:array[1..8,'a'..'h'] of char;
- begin
- writeln('Введите координаты по горизонтали');
- readln(x1);
- writeln( 'Введите координаты по вертикали');
- readln(y);
- case x1 of
- 'a': x:=1;
- 'b': x:=2;
- 'c': x:=3;
- 'd': x:=4;
- 'e': x:=5;
- 'f': x:=6;
- 'g': x:=7;
- 'h': x:=8;
- end;
- writeln(' A B C D E F G H');
- for i:=8 downto 1 do writeln(i);
- for i:=1 to 8 do
- for j:='a' to 'h' do
- if abs(i-y)*abs(ord(j)-ord(x1))=2 then a[i,j]:='X'
- else a[i,j]:='0';
- a[y,x1]:='K';
- for i:=8 downto 1 do
- begin
- for j:='a' to 'h' do
- write('', a[i,j]:2);
- writeln;
- end;
- end.
Решение задачи: «Определить на какие поля шахматной доски может пойти конь с заданными координатами»
textual
Листинг программы
- var y, i: Integer;
- j, x: char;
- a: array[1..8, 'a'..'h'] of Char;
- begin
- Writeln('Введите координаты по горизонтали');
- Readln(x);
- Writeln('Введите координаты по вертикали');
- Readln(y);
- Write(' ');
- for j := 'A' to 'H' do Write(j, ' ');
- Writeln;
- 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] := 'X'
- else a[i, j] := '0';
- a[y, x] := 'K';
- for i := 8 downto 1 do
- begin
- Write(i, ' ');
- for j := 'a' to 'h' do Write(a[i, j]:2);
- Writeln;
- end;
- end.
Объяснение кода листинга программы
- Объявляются переменные:
y
иi
типа Integer для хранения координат по вертикали и для использования в циклах;j
иx
типа char для хранения координат по горизонтали и для использования в циклах;a
- двумерный массив размером 8x8, где каждый элемент массива может содержать символы от 'a' до 'h'.
- Выводится сообщение
Введите координаты по горизонтали
. - Вводится значение переменной
x
. - Выводится сообщение
Введите координаты по вертикали
. - Вводится значение переменной
y
. - Выводится строка с буквами от 'A' до 'H'.
- Для каждого
i
от 1 до 8 и для каждогоj
от 'a' до 'h' проверяется условие:- Если разница между значениями
i-y
умноженной на разницу междуord(j)-ord(x)
равна 2, то значение в массивеa
по координатамi
иj
устанавливается как 'X', в противном случае устанавливается как '0'.
- Если разница между значениями
- В массиве
a
по координатамy
иx
устанавливается символ 'K'. - Для
i
от 8 до 1 выполняется цикл:- Выводится значение
i
. - Для
j
от 'a' до 'h' выводится значение элементов массиваa[i, j]
с отступами.
- Выводится значение
- Программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д