0

Я пытаюсь сделать функцию, которая отображает определенную матрицу; Вот что я пытался сделать:Как передать двумерный массив в качестве аргумента функции?

void print(int n,int a[n][n]) 
    { 
     for(int i=1;i<=n;i++) 
     { 
      for(int j=1;j<=n;j++) 
      { 
       cout<<a[i][j]; 
      } 
      endl; 
     } 
    } 

Я знаю, что это не правильно, но я не лучшая идея. Пожалуйста, помогите мне!

+1

Пожалуйста, отметьте свой вопрос на этом языке. – Barmar

+0

Я думаю, его C++, но вы правы. Он должен пометить язык. – Christos

+1

'endl;' ничего не делает. Вероятно, вы имели в виду 'std :: cout << std :: endl;'. – aschepler

ответ

0

Я думаю, что проблема может заключаться в том, что ваши индексы i и j начинаются с 1 и не равны нулю. Попробуйте что-то вроде следующего:

int a[m][n]; 
for (int i=0; i<m; ++i){ 
    for (int j=0; j<n; ++j){ 
     cout << a[i][j]; 
    } 
    cout << endl; 
} 
0
void print(int array[][n],int n){ 

    for(int i=0;i<n;i++){ 
     for(int j=0;j<n;j++){ 
      cout<<array[i][j]; 
     } 
    cout<<endl; 
    } 
    return ; 
} 

print(array,size) 
0

void print(int n, int a[n][n]) превращается фактически в void print(int n, int a[][])

Если размер известен, вы можете использовать:

void print(int (&a)[42][42])

или в общем виде :

template <int N, int M> 
void print(int (&a)[N][M]) 
{ 
    for (int j = 0; j != M; ++j) { 
     for (int i = 0; i != N; ++i) { 
      std::cout << a[i][j] << " "; 
     } 
     std::cout << std::endl; 
    } 
} 

Примечание: индекс переходит от 0 (включительно) к N (исключительно).

Смежные вопросы