C ++数独求解器文件重定向

时间:2015-09-26 17:52:32

标签: c++

我想要做的是使用文件重定向读取带有数字的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 */

2 个答案:

答案 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

从文本文件中重定向输入