Определить на какие поля шахматной доски может пойти конь с заданными координатами - 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]с отступами.
- Выводится значение
- Программа завершается.