-1
関数multiplyMatrix
に3つの行列を渡します。行列a
およびb
はユーザによって入力され、c
はa
およびb
の積である。値をc
に割り当てるときにエラーが発生します。2つの3x3行列を掛ける関数
式は、変更可能なIvalueでなければなりません。
誰かが私にこれを説明できますか?
const int N = 3;
void multiplyMatrix(const double a[][N], const double b[][N], const double c[][N])
{
for (int i = 0; i < N; i++) {
for (int k = 0; k < N; k++) {
c[i][k] = a[i][0] * b[0][k] + a[i][1] * b[1][k] + a[i][2] * b[2][k];
}
}
}
int main()
{
cout << "Enter matrix1: ";
double m1[3][N];
for (int i = 0; i < N; i++) {
for (int k = 0; k < N; k++) {
cin >> m1[i][k];
}
}
cout << "Enter matrix2: ";
double m2[3][N];
for (int i = 0; i < N; i++) {
for (int k = 0; k < N; k++) {
cin >> m2[i][k];
}
}
//have to initiliaze matrix to some value for math to work properly!!!
double m3[3][N] = {};
multiplyMatrix(m1, m2, m3);
return 0;
}
あなたは配列cを 'const'として渡して、それを更新しようとしています。 –
@RamandeepPunia Ha。ありがとう。私は自分の教科書が使っていると言う正確な関数のヘッダを使っていました。完璧な意味合いを持つ。 – so8857
'm1'などを' double m1 [N] [N]; 'として宣言する方が良いでしょう。 'm3'を初期化しなければならないというあなたのコメントは間違っています - あなたは' c'にしか割り当てません。 –