код для шахматной доски каждый шахматисты B
для черного и белого W
для , где W
и B
не разделяют один и тот же край.ошибка при проверке соседних ячеек в 2d массив
Пример:
WBWB
BWBW
WBWB
BWBW
Мой код:
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
char chess[4][4];
for (int i = 0;i<n;i++)
for (int j = 0;j<m;j++)
cin >> chess[i][j];
for (int i = 0;i<n;i++)
for (int j = 0;j<m;j++)
{
if (chess[i][j] == '.')
{
if (chess[i - 1][j] == 'W' || chess[i + 1][j] == 'W' || chess[i][j + 1] == 'W' || chess[i][j - 1] == 'W')
chess[i][j] = 'B';
else
chess[i][j] = 'W';
}
}
for (int i = 0;i<n;i++)
{
for (int j = 0;j<m;j++)
cout << chess[i][j];
cout << endl;
}
system("pause");
return 0;
}
Проблема заключается в том, что, когда я запускаю этот код выход:
WBWB
BWBW
BBWB
WBBW
Я отлажена его и chess[2][-1]
равно до W
, это вне сферы действия, поэтому он должен быть мусором.
Я получаю представление о неопределенном поведении. но есть ли более простой способ проверки границ? Использование операторов If сделает код слишком длинным –