从用户输入填充二维数组

Filling 2-D arrays from user input

本文关键字:二维数组 填充 输入 用户      更新时间:2023-10-16

我有一点问题,我正在编写一个程序,要求用户输入数独网格的数字,然后将它们存储在二维数组中。我知道如何打印出数组来显示数独网格,但是我有麻烦让数组元素设置为用户输入的数字,有人能帮助吗?

这是我所拥有的,我知道不多,但我以前只对一维数组做过这样的操作。

代码:

#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;
    }
}

这里有两个函数,一个是通过获取用户输入来交互式地填充数独洞。另一个用于打印数独。从你提供的一点信息来看,我认为这正是你想要的:

#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()之前应该检查用户输入),但这种方法是我能想到的更简单的方法。

首先,您在期望数组的地方接收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};