【发布时间】:2016-06-23 04:16:06
【问题描述】:
我的任务是在我的编程课上使用数组创建一个数独游戏。
我做了一个非常混乱的尝试,试图在 3x3 方块之间显示带有“-”的 9x9 数组。
代码可以编译,但是板子的显示是关闭的,“-”出现在不应该出现的地方,有时应该出现的地方却不出现。
我是 C++ 新手,感谢您的帮助!这是我的显示功能:
for (int x = 0; x < 11; x++)
{
for (int y = 0; y < 11; y++)
{
if(board[x][y] == 0)
{
cout << setw(2) << " ";
}
else
{
if (x > 3 && x < 7 && y > 3 && y < 7 && board[x-1][y-1] != 0)
{
cout << setw(2) << board[(x-1)][(y-1)] << " ";
}
else if (x > 3 && x < 7 && y < 3 && board[x-1][y] != 0)
{
cout << setw(2) << board[(x-1)][(y)] << " ";
}
else if (x > 7 && y < 3 && board[x-2][y] != 0)
{
cout << setw(2) << board[(x-2)][(y)] << " ";
}
else if (x < 3 && y > 3 && y < 7 && board[x][y-1] != 0)
{
cout << setw(2) << board[(x)][(y-1)] << " ";
}
else if (x < 3 && y > 7 && board[x][y-2] != 0)
{
cout << setw(2) << board[(x)][(y-2)] << " ";
}
else if (x > 3 && x < 7 && y > 7 && board[x-1][y-2] != 0)
{
cout << setw(2) << board[(x-1)][(y-2)] << " ";
}
else if (x > 7 && y > 7 && board[x-2][y-2] != 0)
{
cout << setw(2) << board[(x-2)][(y-2)] << " ";
}
else if (x > 7 && y > 3 && y < 7 && board[x-2][y-1] != 0)
{
cout << setw(2) << board[(x-2)][(y-1)] << " ";
}
else if (x < 3 && y < 3)
{
cout << setw(2) << board[x][y] << " ";
}
else
{
cout << setw(2) << "-" << " ";
}
}
}
cout << endl;
}
【问题讨论】:
-
找出程序不工作原因的最佳方法是使用调试器。
-
你说你的程序是一个 9x9 数组,那为什么你的 for 循环是从 0 到 11 呢?
-
您需要将数据的 view 与它的 model 分开。棋盘应存储为整数,这就是数独数字。具体来说,一个 9x9 网格。然后,您应该编写一个函数来将此网格转换为您想要的格式。
标签: c++ arrays sorting display