Enc*_*ter 0 c++ nested sudoku switch-statement
目前我正在尝试创建一个程序,它将从头开始自动生成一个完整的数独板,虽然相同的功能可以通过微小的改动来解决部分填充的数独板.问题是,当你在板上加载一个新的数字时,你显然必须检查这个数字是否已经存在于同一列或行中,而且也是在加载它的3x3方块中.对程序的一部分使用嵌套的switch语句,你必须根据相同的3x3方格中的数字检查数字,尽管break语句都显示在正确的位置.compliler说的是第二个case语句的第一个数字,它是嵌套switch语句的一部分:"Error:case标签值已经出现在这个开关中",即使数字没有,问题是为什么?
这是代码:
bool SudokuClass::checkPresentGrid(int &temporary, int row, int column)
{
bool indicator;
switch (row)
{
case 0 || 3 || 6: //If the number is being loaded into row 0,3 or 6
switch (column)
{
case 0 || 3 || 6: //Check all other spaces in the same 3x3 grid
if (temporary == (completeSudoku[row + 1][column + 1] || completeSudoku[row + 1][column + 2] || completeSudoku[row + 2][column + 1] || completeSudoku[row + 2][column + 2]))
{
indicator = true;
}
break;
case 1 || 4 || 7:
if (temporary == (completeSudoku[row + 1][column - 1] || completeSudoku[row + 1][column + 1] || completeSudoku[row + 2][column - 1] || completeSudoku[row + 2][column + 1]))
{
indicator = true;
}
break;
case 2 || 5 || 8:
if (temporary == (completeSudoku[row + 1][column - 2] || completeSudoku[row + 1][column - 1] || completeSudoku[row + 2][column - 2] || completeSudoku[row + 2][column - 1]))
{
indicator = true;
}
break;
}
break;
case 1 || 4 || 7: //If the number is being loaded into row 1, 4 or 7
switch (column)
{
case 0 || 3 || 6: //Check all other spaces in the same 3x3 grid
if (temporary == (completeSudoku[row - 1][column + 1] || completeSudoku[row - 1][column + 2] || completeSudoku[row + 1][column + 1] || completeSudoku[row + 1][column + 2]))
{
indicator = true;
}
break;
case 1 || 4 || 7:
if (temporary == (completeSudoku[row - 1][column - 1] || completeSudoku[row - 1][column + 1] || completeSudoku[row + 1][column - 1] || completeSudoku[row + 1][column + 1]))
{
indicator = true;
}
break;
case 2 || 5 || 8:
if (temporary == (completeSudoku[row - 1][column - 2] || completeSudoku[row - 1][column - 1] || completeSudoku[row + 1][column - 2] || completeSudoku[row + 1][column - 1]))
{
indicator = true;
}
break;
}
break;
case 2 || 5 || 8: //If the number is being loaded into row 2, 5 or 8
switch (column)
{
case 0 || 3 || 6: //Check all other spaces in the same 3x3 grid
if (temporary == (completeSudoku[row - 2][column + 1] || completeSudoku[row - 2][column + 2] || completeSudoku[row - 1][column + 1] || completeSudoku[row - 1][column + 2]))
{
indicator = true;
}
break;
case 1 || 4 || 7:
if (temporary == (completeSudoku[row - 2][column - 1] || completeSudoku[row - 2][column + 1] || completeSudoku[row - 1][column - 1] || completeSudoku[row - 1][column + 1]))
{
indicator = true;
}
break;
case 2 || 5 || 8:
if (temporary == (completeSudoku[row - 2][column - 2] || completeSudoku[row - 2][column - 1] || completeSudoku[row - 1][column - 2] || completeSudoku[row - 1][column - 1]))
{
indicator = true;
}
break;
}
break;
}
return indicator;
Run Code Online (Sandbox Code Playgroud)
}
更改
case 0 || 3 || 6: //If the number is being loaded into row 0,3 or 6
Run Code Online (Sandbox Code Playgroud)
至
case 0:
case 3:
case 6: //If the number is being loaded into row 0,3 or 6
Run Code Online (Sandbox Code Playgroud)
......等等,还有你的其他case陈述.
你的代码 case 0 || 3 || 6
被评估为 case (0 || 3 || 6)
变成了 case (false || true || true)
变成了case (true),这不是你想要的.
| 归档时间: |
|
| 查看次数: |
1169 次 |
| 最近记录: |