Рассматривается стандартная шахматная доска размером 8х8. Примем, что i – номер вертикали (может принимать значения от 1 до 8), j – номер горизонтали (также может принимать значения от 1 до 8). В левом нижнем углу, т.е. на поле i=1, j=1 (это поле черного цвета) стоит черный король. Напомним, что король может ходить на 1 клетку в любом направлении (по горизонтали, вертикали или диагонали). В правом нижнем углу, т.е. на поле i=8, j=1 (это поле белого цвета) стоит белый король. Введены обозначения: P(i,j) минимальное число ходов, за которое черный король может попасть на поле (i,j); V(i,j)минимальное число ходов, за которое белый король может попасть на поле (i,j).
Программист написал программу, в которой требовалось определить все такие поля (i,j), для которых P(i,j)=V(i,j), и выдать на экран соответствующие значения i,j (текст программы приведен ниже).
#include <stdio.h>
#include <math.h>
main()
{
int i,j;
printf("Искомые поля");
for (j=5;j<=8;j++)
for (i=1;i<=8;i++){
if ((i==9-j)||(i==j)) printf ("i=%d, j=%d",&i,&j);
}
}
Последовательно ответьте на вопросы:
1. Выдаст ли программа, написанная программистом, поле, для которого i=4, j=5?
2. Указать все из перечисленных ниже полей, которые удовлетворяют постановке задачи, т.е. для таких полей должно быть выполнено P(i,j)=V(i,j):
(i=1, j=8), (i=2, j=8), (i=1, j=7), (i=5, j=5), (i=8, j=6)
3. Видно, что программист допустил ошибку в программе. Укажите, какую доработку программы нужно провести, чтобы она соответствовала постановке задачи (такая доработка может быть проведена неединственным образом – годится любой правильный вариант доработки).