数独解算器文件重定向

C++ Sudoku Solver File Redirection

本文关键字:文件 重定向      更新时间:2023-10-16

我要做的是在使用文件重定向的数字中读取9x9网格,只是重印相同的文件,但每当我运行。/app时。Sudoku1。它要么不输出任何内容到。Out文件,要么输出一堆指向数据位置的指针。我们不能使用文件i/o,所以我的指令说:所有的数据都可以通过stdin提示符的方式交互式地获得。然后,可以通过使用文件重定向将数据从文件提供给程序。我觉得我忽略了最简单的事情任何帮助都会很感激。这是我的数独游戏。在文件中(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 */

为了从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();
}

你只需要从cin中读取拼图,就像你打印它一样:

void mySudoku::ReadPuzzle(){
    for(int i = 0; i < Size; i++){
        for(int j = 0; j < Size; j++){
            cin >> Data[i][j];
        }
    }
}

然后你可以在控制台中输入input或者使用管道cat Sudoku1.in | ./app.out

从文本文件中重定向它