2015-05-05 15 views
0
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行而没有得到核心转储错误。我知道这可能是我需要输入的一个简单的小线来解决这个问题,但我很难过。子阵核心转储问题

回答

0

在你的代码中你已经执行了下界检查,但你的上界检查丢失了。您需要确保您的x或y坐标不超过板边界。

就在你的循环添加额外的条件,假设你的X_SIZE ANS 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++; 
      } 
    } 
} 
+0

吧,我没有包含任何,因为我不能让它正常工作各个尺寸的大小,是什么我发布了除第四行以外的作品 – ColinO