2017-01-31 5 views
-1

3 행렬을 multiplyMatrix 함수에 전달합니다. 행렬 ab이 사용자에 의해 입력되고 cab의 곱입니다. c에 값을 할당 할 때 오류가 발생합니다.두 개의 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 개의 행렬을 전달합니다. 행렬 ab이 사용자에 의해 입력되고 cab의 곱입니다. 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를 제거하면 좋겠다.