2017-05-30 55 views
0

我試圖找出如何在2維矩陣傳遞給函數如何發送2維矩陣與未知大小的功能

//function to print Matrix 
void refl(int n, int board[][]) 
{ 
    for(int i=0; i<n; i++) 
    { 
     for(int j=0; j<n; j++) 
     { 

      cout << board[i][j] << " "; 
      } 
     cout << endl; //printing the matrix to the screen 
    } 
} 

int main() 
{ 
    int n; 
    string refl; 
    cin>>n; 
    int board[n][n]; //creates a n*n matrix or a 2d array. 

     for(int i=0; i<n; i++) //This loops on the rows. 
    { 
     for(int j=0; j<n; j++) //This loops on the columns 
      cin>>board[i][j]; 
    refl(n , board); 
    } 

return 0; 
} 

它說,「n」和「板」 ISN他們在功能中聲明。

回答

1

嘗試使用C++ std::vector或舊的C malloc + free

C++

#include <string> 
#include <iostream> 
#include <vector> 

using namespace std; 

void reflxx(int n, vector<vector<int>>& board) 
{ 
    for(int i=0; i<n; i++) 
    { 
     for(int j=0; j<n; j++) 
     { 

      cout << board[i][j] << " "; 
      } 
     cout << endl; //printing the matrix to the screen 
    } 
} 

int main() 
{ 
    int n; 
    string refl; 
    cin>>n; 
    vector<vector<int>> board(n, vector<int>(n)); 
    //creates a n*n matrix or a 2d array. 

     for(int i=0; i<n; i++) //This loops on the rows. 
    { 
     for(int j=0; j<n; j++) //This loops on the columns 
      cin>>board[i][j]; 
    } 
    reflxx(n , board); 

return 0; 
} 

更多例如參見http://www.cplusplus.com/reference/vector/vector/resize/

+0

我已經試過你的方法 現在我得到這個錯誤: '| 29 |錯誤:不對應的呼叫「(的std :: string {又名性病:: basic_string的})(INT和,INT [N ] [']'|' **特意在這行代碼** \t'refl(n,board);' – FUTCHANCE

+0

啊,我應該試着在發佈前編譯這個,不能讓它工作。通常,如果我們想在運行時創建一個可變大小的動態數組,我們可以使用'malloc' +'free'或'std :: vector'。 –

+0

我要求太多,但你能告訴我如何使用std :: vector嗎? 因爲我聽說很多。 – FUTCHANCE