2013-04-07 51 views
0

我有一個問題,我正在編寫一個程序,要求用戶輸入一個數獨網格的數字,然後將它們存儲在一個二維數組中。我知道如何打印數組以顯示數獨網格,但我無法將數組元素設置爲用戶輸入的數字,任何人都可以幫助嗎?從用戶輸入填充二維數組

這就是我擁有的所有東西,我知道的並不多,但我以前只用過一維數組做過。

代碼:

#include <iostream> 

using namespace std; 

void fillGrid1(int grid1, int sizeOfArray) { 
    for(int x = 0; x < sizeOfArray; x++) { 
     grid1[x][9] = x; 
    } 
} 

int main() 
{ 
    int grid1[9][9]; 
    fillGrid1(grid1, 9); 

    for(int row = 0; row < 9; row++) { 
     for(int column = 0; column < 9; column++) { 
      cout << grid1[row][column] << " "; 
     } 

     cout << endl; 
    } 
} 
+0

fillGrid1應該做什麼? – 2013-04-07 19:40:24

+0

你用1d陣列做了什麼,你不能用2d陣列做什麼? – 2013-04-07 19:41:54

+0

這是我遇到問題的部分,即填充數組。 – Thomas 2013-04-07 19:41:59

回答

1

這裏有兩個功能,一是通過獲取用戶輸入的交互式填充孔數獨。另一個用於打印數獨。與小信息,你給它就是我想你追求:

#include <iostream> 
#include <stdio.h> 
#include<stdlib.h> 

using namespace std; 

void interactiveSudokuFill(int grid1[9][9]){ 

for(int y=0;y<9;y++){ 
    for(int x=0;x<9;x++){ 
     string theString; 
     cout<<"Write the value to prace in Sudoku["<<y<<"]["<<x<<"] :"<<endl; 
     std::getline(cin,theString); 
     int nr=atoi(theString.c_str()); 
     grid1[y][x]=nr; 
    } 

} 
} 

void printSudoku(int grid[9][9]){ 
for(int y=0;y<9;y++){ 
     for(int x=0;x<9;x++){ 
      cout<<"["<<grid[y][x]<<"]"; 
     } 
     cout<<endl; 

    } 
} 
int main() 
{ 
int grid1[9][9]; 
interactiveSudokuFill(grid1); 

printSudoku(grid1); 
} 

有這樣做(例如用戶輸入應已delievering它給atoi()前檢查)的其他更安全/優雅的方式,但這種方式是我能想到的更簡單。

+0

謝謝,這很有幫助,我會在輸入驗證中加入我自己 – Thomas 2013-04-07 21:15:34

0

首先,你正在做一個int,你期待一個數組:

void fillGrid1(int grid1, int sizeOfArray) 
//    ^^^^^^^^^ 

這應該是這樣的形式的東西,

void fillGrid1(int grid1[9][9], int sizeOfArray) 

下一頁是,你應該使用嵌套循環訪問多維數組的元素:

void fillGrid1(int grid1[9][9], int sizeOfArray) 
{ 
    for (int i = 0; i < sizeOfArray; ++i) 
    { 
     for (int k = 0; k < sizeOfArray; ++k) 
     { 
      grid1[i][k] = x; // shouldn't x be the number the user entered? 
     } 
    } 
} 

您還應該零填充您的數組:

int grid1[9][9] = {0};