我正在用c ++创建一种扫雷程序,在运行一些测试之后,我发现由于某种原因我看不到,我的一个for循环永远不会结束。我已经看了很长时间的代码了,看不出原因。非常感谢你帮助我,我对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语句。
答案 0 :(得分:2)
if(r+1 != 9 && c+1 != 9 && realmap[r+1][c=1] ==10
我不知道你的代码的任何部分实际上是做什么或检查的,但是这会在满足前两个条件的每一遍中将c重置为1,从而导致无限循环。
答案 1 :(得分:1)
我不认为你的功能会进入无限循环。
原因是这些循环迭代器具有不同的范围,并且在C ++中完全有效。
但是您的代码每次遇到时都会sleep(5000)
等待 5000秒。
删除sleep
并尝试运行代码。
答案 2 :(得分:0)
我认为@Bart在这里是正确的轨道。您有嵌套循环正在修改相同的变量。这通常表明出现了问题。尝试重命名内循环r
和c
变量。