我想要做的是使用文件重定向读取带有数字的9x9网格,然后重新打印相同的文件,但每当我运行./app.out Sudoku1.out时,它都不会打印.out文件或什么似乎是一堆指向数据位置的指针。我们不能使用文件i / o所以我的指示说:所有数据都可以通过交互式stdin提示的方式获得。然后,您可以使用文件重定向从文件将数据提供给程序。我觉得我忽略了最简单的事情,任何帮助都会受到赞赏。这是我的Sudoku1.in文件(0表示空白点):
0 0 5 7 1 0 6 8 2
0 3 6 0 4 0 0 7 5
7 0 0 5 8 6 3 4 9
9 8 4 0 5 7 2 0 0
1 5 0 0 0 0 7 9 8
6 7 2 8 0 0 0 0 4
0 6 8 2 0 9 0 1 0
3 4 9 1 0 0 8 2 0
0 1 7 0 3 0 9 0 6
这是我的Sudoku.cpp文件:
#include <iostream>
#include "mySudoku.h"
using namespace std;
mySudoku::mySudoku(){
for(int i = 0; i < Size; i++){
for(int j = 0; j < Size; j++){
Data[i][j] = 0;
}
}
}
mySudoku::mySudoku(int anArray[][Size]){
for(int i = 0; i < Size; i++){
for(int j = 0; j < Size; j++){
Data[i][j] = anArray[i][j];
}
}
}
mySudoku::mySudoku(const mySudoku& orig){
}
mySudoku::~mySudoku(){
}
void mySudoku::ReadPuzzle(){
}
void mySudoku::PrintPuzzle(){
for(int i = 0; i < Size; i++){
for(int j = 0; j < Size; j++){
cout << Data[i][j] << " ";
}
cout << endl;
}
}
bool mySudoku::CheckRow(int row, int number){
}
bool mySudoku::CheckCol(int col, int number){
}
这是我的mySudoku.h文件:
#ifndef MYSUDOKU_H
#define MYSUDOKU_H
const int Size(9);
class mySudoku {
public:
mySudoku();
mySudoku(int anArray[][Size]);
mySudoku(const mySudoku& orig);
void ReadPuzzle();
void PrintPuzzle();
bool CheckRow(int row, int number);
bool CheckCol(int col, int number);
virtual ~mySudoku();
private:
int Data[Size][Size];
};
#endif /* MYSUDOKU_H */
答案 0 :(得分:0)
要从stdin
读取数据,您应该使用std::cin
,然后按以下方式测试您的程序:
cat Sudoku1.in | ./app.out
目前我没有看到任何功能在您的文件中执行此操作,但您尚未添加main()
功能。您可以通过以下方式编辑ReadPuzzle()
方法:
void mySudoku::ReadPuzzle() {
for(int i = 0; i < Size; i++) {
for(int j = 0; j < Size; j++) {
cin >> Data[i][j];
}
}
}
然后在main()
int main() {
mySudoku ms;
ms.readPuzzle();
}
答案 1 :(得分:0)
您只需要以与打印时相同的方式阅读cin
中的拼图:
void mySudoku::ReadPuzzle(){
for(int i = 0; i < Size; i++){
for(int j = 0; j < Size; j++){
cin >> Data[i][j];
}
}
}
然后,您可以在控制台中输入输入,或使用管道cat Sudoku1.in | ./app.out