Jas*_*son 0 c++ arrays sorting
尽管我已按升序初始化数组,但我无法使此函数返回true.
bool won(int gameBoard[][SIZE])
{
for(int i=0;i<SIZE;i++)
{
for(int j=0;j<SIZE;j++)
{
if(gameBoard[i][j]>gameBoard[i][j+1]||gameBoard[i][j]>gameBoard[i+1][0])
{
return false;
}
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
您的代码中有两个问题.
1. i和j的值在某个阶段变得超出范围.
2.检查数组是否按升序排列的条件是错误的.
让我们一一解决
- 为了保持i的值,j在范围内改变for循环,就像这样
for(int i=0;i<SIZE;i++)
{
for(int j=0;j<SIZE;j++)
{
}
}
Run Code Online (Sandbox Code Playgroud)
for(int i=0;i<SIZE-1;i++)
{
for(int j=0;j<SIZE-1;j++)
{
}
}
Run Code Online (Sandbox Code Playgroud)
当值你的计划正面临着错的是j成为SIZE-1你检查是否gameBoard[i][j]>gameBoard[i][j+1].但gameBoard[i][j+1]将尝试访问gameBoard[i][SIZE],你知道有在指数没有价值,因为你从0保存价值SIZE-1.i当您的程序检查最后一行时会发生同样的问题.
- 要修复检查条件,请
if the array is in ascending order or not更改以下条件:
if(gameBoard[i][j]>gameBoard[i][j+1]||gameBoard[i][j]>gameBoard[i+1][0])
Run Code Online (Sandbox Code Playgroud)
if((j!=SIZE-2 && gameBoard[i][j]>gameBoard[i][j+1])
||(j==SIZE-2 && ((gameBoard[i][j]>gameBoard[i][j+1])||(gameBoard[i][j+1]>gameBoard[i+1][0])))
Run Code Online (Sandbox Code Playgroud)
当指数j小于SIZE-2比较gameBoard[i][j]及gameBoard[i][j+1],看看他们是否断条件或not.But当索引j等于SIZE-2,我们要比较两个things.One的比较gameBoard[i][j]下一个元素gameBoard[i][j+1],另外一个是比较下一个元素的j与下一行的第一元件gameBoard[i+1][0].N:B:只有那个时候你应该检查是否gameBoard[i][j]大于gameBoard[i+1][0],而不是每次.
| 归档时间: |
|
| 查看次数: |
465 次 |
| 最近记录: |