我有点问题,我正在编写一个程序,要求用户输入数独网格的数字,然后将它们存储在二维数组中。我知道如何打印出数组以显示数独网格,但我无法将数组元素设置为用户输入的数字,任何人都可以帮忙吗?
这就是我所拥有的一切,我知道并不多,但我以前只用一维数组做过这个。
代码:
#include <iostream>
using namespace std;
void fillGrid1(int grid1, int sizeOfArray) {
for(int x = 0; x < sizeOfArray; x++) {
grid1[x][9] = x;
}
}
int main()
{
int grid1[9][9];
fillGrid1(grid1, 9);
for(int row = 0; row < 9; row++) {
for(int column = 0; column < 9; column++) {
cout << grid1[row][column] << " ";
}
cout << endl;
}
}
答案 0 :(得分:1)
这里有两个函数,一个是通过获取用户输入以交互方式填充数据库。另一个用于打印数独。根据您提供的信息,我认为您寻求的是:
#include <iostream>
#include <stdio.h>
#include<stdlib.h>
using namespace std;
void interactiveSudokuFill(int grid1[9][9]){
for(int y=0;y<9;y++){
for(int x=0;x<9;x++){
string theString;
cout<<"Write the value to prace in Sudoku["<<y<<"]["<<x<<"] :"<<endl;
std::getline(cin,theString);
int nr=atoi(theString.c_str());
grid1[y][x]=nr;
}
}
}
void printSudoku(int grid[9][9]){
for(int y=0;y<9;y++){
for(int x=0;x<9;x++){
cout<<"["<<grid[y][x]<<"]";
}
cout<<endl;
}
}
int main()
{
int grid1[9][9];
interactiveSudokuFill(grid1);
printSudoku(grid1);
}
还有其他更安全/更优雅的方法(例如,在将它传递给atoi()之前应该检查用户输入),但这种方式我能想到的更简单。
答案 1 :(得分:0)
首先,你正在接受一个你期望数组的int:
void fillGrid1(int grid1, int sizeOfArray)
// ^^^^^^^^^
这应该是某种形式,
void fillGrid1(int grid1[9][9], int sizeOfArray)
接下来,您应该使用嵌套循环来访问多维数组的元素:
void fillGrid1(int grid1[9][9], int sizeOfArray)
{
for (int i = 0; i < sizeOfArray; ++i)
{
for (int k = 0; k < sizeOfArray; ++k)
{
grid1[i][k] = x; // shouldn't x be the number the user entered?
}
}
}
您还应该对阵列进行零填充:
int grid1[9][9] = {0};