Я не могу заставить мою простую программу передать 2d-массив функции

ive попробовал несколько способов, но я не могу получить функцию "Matrixinputs" для принятия массива 2d по ссылке. "Matrixinputs" собирается изменить входы массива на то, что пользователь выбирает. Я новичок, но я думаю, что это связано с тем, что я пытаюсь передать динамический массив, параметры которого определены пользователем, но это просто предположение. пожалуйста, помогите, я получаю ошибки

matrix2.C:15:11: error: invalid operands of types ‘int [(((sizetype)(((ssizetype)a) + -1)) + 1)][(((sizetype)(((ssizetype)b) + -1)) + 1)] and ‘int [(((sizetype)(((ssizetype)c) + -1)) + 1)][(((sizetype)(((ssizetype)d) + -1)) + 1)] to binary ‘operator*
 cour<
<p> или</p> <pre class="prettyprint linenums">$ g++ matrix.C -omatrixs -lm matrix.C: In function ‘int main(): matrix.C:16:25: error: expression list treated as compound expression in initializer [-fpermissive]</pre> <p> и вот мой код</p> <pre class="prettyprint linenums">#include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; //Prototypes ****** Matrixsettings(int&amp;, int&amp;, int&amp;, int&amp;); int Matrixinputs(int&amp;, int &amp;); int main() { int a=2, b=2, c=2, d=2; cout&lt;&lt; Matrixsettings( a,b,c,d); cout&lt;&lt; a&lt;&lt;b&lt;&lt;c&lt;&lt;d; int="" m1="" [a]="" [b],="" m2="" [c]="" [d];="" cout&lt;&lt;m1="" [b]&lt;&lt;="" matrixinputs(m1="" [b],m2="" [d]);="" return="" 0;="" }="" ******="" matrixsettings(="" &amp;a,="" &amp;b,="" &amp;c,="" &amp;d)="" {="" cout&lt;&lt;="" "how="" many="" rows="" in="" the="" first="" matrix:="" ";="" cin=""&gt;&gt; a; cout&lt;&lt; "how many columns in the first matrix: "; cin&gt;&gt; b; cout&lt;&lt; "how many rows in the second matrix: "; cin&gt;&gt; c; cout&lt;&lt; "how many columns in the second matrix: "; cin&gt;&gt; d; return 0; } int Matrixinputs(m1&amp; [a] [b],m2&amp; [c] [d]); { //this function will have a loop with cout and cin line defining each input of the matrix like array array } &lt;/b&lt;&lt;c&lt;&lt;d;&gt;&lt;/cmath&gt;&lt;/iostream&gt;</pre>
2 ответа

void Matrixinputs(int* matrix, int row, int column);
{
//this function will have a loop with cout and cin line defining each input of the matrix like array array

for (int i=0; i<row; i++)="" {="" for="" (int="" j="0;" j<column;="" j++)="" cin="">> matrix[i*row+column];
 }
}
}
</row;>

Вне этой функции вручную выделяйте память на указатель матрицы.


Удобно использовать вектор, но пример использования нового.

#include <iostream>

using namespace std;

template <typename t="">
T **make_2d(int r, int c){
 T** array_2d = new T*[r];
 for(int i=0;i<r;++i) array_2d[i]="new" t[c];="" return="" array_2d;="" }="" template="" <typename="" t="">
void drop_2d(T** matrix, int r){
 for(int i=0;i<r;++i) delete[]="" matrix[i];="" matrix;="" }="" typedef="" int**="" void="" matrixinputs(matrix="" &m,="" int="" r,="" c){="" for(int="" i="0;i" <="" r;="" ++i){="" j="0;" c;++j){="" cout="" <<="" "["="" "]["="" "]="">";
 cin >> m[i][j];
 }
 }
}

int main(){
 int a,b;
 cin >> a;
 cin >> b;

 Matrix m = make_2d<int>(a, b);

 MatrixInputs(m, a, b);

 //print
 for(int i=0;i</int></r;++i)></r;++i)></typename></iostream>

licensed under cc by-sa 3.0 with attribution.