处理2D数组Sudoku程序,我希望用户输入用空格分隔,而不是逐行输入每个输入。这会让用户更容易看到他们输入任何想法的内容?希望它是由9行而不是逐行的9个数字。当前代码:
int main()
{
int grid[N][N];
//Input
std::cout << "Enter a Sudoku puzzle:" << std::endl;
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
std::cin >> grid[i][j];
std::cout << "Sodoku Puzzle: \n";
printSodoku(grid);
std::cout << "\n Solution: \n";
if (SolveSudoku(grid) == true)
printSodoku(grid);
else
printf("No solution exists");
_getch();
return 0;
}
答案 0 :(得分:3)
您当前的代码允许,因为cin占用任何空格之前的内容,将其输出到您的代码中,并等待另一个cin并输出下一个内容。因此,无需任何修改,您的程序应该能够做到这一点。
答案 1 :(得分:0)
您可以使用getline捕获cin流直到换行并迭代包含的值,指定空格作为分隔符。您需要自己处理网格的索引,因为循环将在输入上而不是
std::string value;
int i = 0;
int j = 0;
while(std::getline(std::cin, value, " ")){
grid[i][j] = atoi(value.c_string());
if(j == 9){
i++;
j = 0;
}
else {
j++;
}
}
这假设表现良好的输入(所有81个条目在同一行上的顺序正确并且由空格分隔),并且该行中的所有值都可以转换为int。如果情况并非如此,那么您需要添加额外的代码来检查while循环中的这些情况。