2017-03-20 20 views
0

2D配列の数独プログラムでは、各入力を行単位で入力する代わりに、ユーザー入力をスペースで区切ります。これは、ユーザーがアイデアを入力しているかどうかを簡単に確認できるようにします。ラインごとにではなく9行で9つの数字にしたいと考えています。現在のコード:C++の入力をグリッドのように書式設定する

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

答えて

3

あなたの現在のコードでは、空白の前にあるものを取り出し、コードに出力し、別のcinを待って次のものを出力します。ですから、プログラムを修正することなく、あなたのプログラムはそれを実行できるはずです。

0

あなたは改行までのcinストリームをキャプチャし、セパレータとしてスペースを指定して含まれている値を反復するのgetlineを使ってこれを行うことができます。ループではなく、これがうまく入力行儀想定

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ループのケースをチェックするために余分なコードを追加する必要があります。

関連する問題