2017-01-31 22 views
-1

関数multiplyMatrixに3つの行列を渡します。行列aおよびbはユーザによって入力され、caおよび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; 
} 
+2

あなたは配列cを 'const'として渡して、それを更新しようとしています。 –

+0

@RamandeepPunia Ha。ありがとう。私は自分の教科書が使っていると言う正確な関数のヘッダを使っていました。完璧な意味合いを持つ。 – so8857

+0

'm1'などを' double m1 [N] [N]; 'として宣言する方が良いでしょう。 'm3'を初期化しなければならないというあなたのコメントは間違っています - あなたは' c'にしか割り当てません。 –

答えて

0

私はmultiplyMatrix関数に3つの行列を渡します。行列aおよびbはユーザによって入力され、caおよびbの積である。値をcに割り当てるときにエラーが発生します。

式は、変更可能なIvalueでなければなりません。

誰かが私にこれを説明できますか?

const int N = 3; 
void multiplyMatrix(double a[3][3], double b[3][3],double c[3][3]) 
{ 

    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; 
} 

constを削除するだけでよいです。

関連する問題