子阵列核心转储问题

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++;
          }
    }
}