子阵列核心转储问题
Sub array core dump issue
int proximity = 0;
for(int i = coord.x - 1; i <= coord.x + 1; i++)
{
if(i < 0)
{
i = coord.x; //prevents from leaving the top of sub array
}
for(int j = coord.y - 1; j <= coord.y + 1; j++)
{
if(j < 0)
{
j = coord.y;
}
if((board[i][j] == bomb) || (board[i][j]==hidden))
proximity++;
} //nested for loop runs through a sub array based on user input between 0-4
}
我正在尝试检查子数组中的坐标,我已经尝试了许多不同的变体,但我无法设法在第 4 行输入坐标而不会出现核心转储错误。我知道这可能是我需要输入的一个简单的小行来解决这个问题,但我很困惑。
在您的代码中,您执行了下限检查,但缺少上限检查。您需要确保您的 x 或 y 坐标不超过板边界。
只需在循环中添加一个额外的条件,假设您的 X_SIZE 和 Y_SIZE 是各自维度的大小
for(int i = coord.x?coord.x - 1:0;
i <= coord.x + 1 && i < X_SIZE;
i++)
{
for(int j = coord.y?coord.y - 1:0;
j <= coord.y + 1 && j < Y_SIZE;
j++)
{
if((board[i][j] == bomb) || (board[i][j]==hidden))
{
proximity++;
}
}
}
int proximity = 0;
for(int i = coord.x - 1; i <= coord.x + 1; i++)
{
if(i < 0)
{
i = coord.x; //prevents from leaving the top of sub array
}
for(int j = coord.y - 1; j <= coord.y + 1; j++)
{
if(j < 0)
{
j = coord.y;
}
if((board[i][j] == bomb) || (board[i][j]==hidden))
proximity++;
} //nested for loop runs through a sub array based on user input between 0-4
}
我正在尝试检查子数组中的坐标,我已经尝试了许多不同的变体,但我无法设法在第 4 行输入坐标而不会出现核心转储错误。我知道这可能是我需要输入的一个简单的小行来解决这个问题,但我很困惑。
在您的代码中,您执行了下限检查,但缺少上限检查。您需要确保您的 x 或 y 坐标不超过板边界。
只需在循环中添加一个额外的条件,假设您的 X_SIZE 和 Y_SIZE 是各自维度的大小
for(int i = coord.x?coord.x - 1:0;
i <= coord.x + 1 && i < X_SIZE;
i++)
{
for(int j = coord.y?coord.y - 1:0;
j <= coord.y + 1 && j < Y_SIZE;
j++)
{
if((board[i][j] == bomb) || (board[i][j]==hidden))
{
proximity++;
}
}
}