Я работаю над созданием своего рода программы minesweeper в C++, и после запуска некоторых тестов я обнаружил, что по какой-то причине я не вижу, одна из моих циклов цикла никогда не заканчивается. Я просмотрел код уже довольно давно и не вижу причины. большое спасибо за то, что помогли мне, я немного новичок в C++ и очень недоумеваю.Почему это для цикла бесконечно?
Вот код:
for (int r = 0; r <= 8; r++)
{
for (int c = 0; c <= 8; c++)
{
int num = 0;
if (realmap[r][c] != 10)
{
if (r - 1 != -1 && realmap[r - 1][c] == 10)
{
num++;
}
if (r - 1 != -1 && c + 1 != 9 && realmap[r - 1][c + 1] == 10)
{
num++;
}
if (c + 1 != 9 && realmap[r][c + 1] == 10)
{
num++;
}
if (r + 1 != 9 && c + 1 != 9 && realmap[r + 1][c = 1] == 10)
{
num++;
}
if (r + 1 != 9 && realmap[r + 1][c] == 10)
{
num++;
}
if (r + 1 != 9 && c - 1 != -1 && realmap[r + 1][c - 1] == 10)
{
num++;
}
if (c - 1 != -1 && realmap[r][c - 1] == 10)
{
num++;
}
if (r - 1 != -1 && c - 1 != -1 && realmap[r - 1][c] == 10)
{
num++;
}
realmap[r][c] = num;
Sleep(5000);
cout << "test3";
}
}
}
Если вы видите проблему, спасибо очень много. Я буду включать остальные утверждения if, если никто не сможет найти проблему.
Вы пытались использовать отладчик, например MVS? –
Почему у вас есть вложенные петли, модифицирующие r и c два раза? – Bart
Барт кажется на правильном пути. Вы повторно инициализируете переменную «r» и «c» до нуля, что предотвратит завершение внешних контуров. –