le code est à échiquier chaque jeu d'échecs B
pour le noir et blanc W
pour , où W
et B
ne doit pas partager le même bord.erreur lors de la vérification des cellules adjacentes dans la matrice 2d
Exemple:
WBWB
BWBW
WBWB
BWBW
Mon code est:
#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;
}
Le problème est que lorsque je lance ce code, la sortie est:
WBWB
BWBW
BBWB
WBBW
Je débogués et chess[2][-1]
égaux à W
, il est hors de portée, donc c'est supposé être une poubelle.
J'ai l'idée du comportement indéfini. mais y a-t-il un moyen plus simple de vérifier les limites? L'utilisation de Si les instructions rendront le code trop long –