-1
3 행렬을 multiplyMatrix
함수에 전달합니다. 행렬 a
및 b
이 사용자에 의해 입력되고 c
은 a
및 b
의 곱입니다. 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;
}
당신은 배열 c를'const'로 전달하고 그것을 업데이트하려고합니다. –
@RamandeepPunia Ha. 감사. 내 교과서에서 사용하는 정확한 함수 헤더를 사용하고 있었고 심지어 그것에 대해 생각조차하지 않았습니다. 완벽하게 이해합니다. – so8857
'm1' 등을'double m1 [N] [N];'이라고 선언하는 편이 낫습니다. 'm3'을 초기화해야한다는 귀하의 의견은 잘못되었습니다 - 오직'c'에만 지정하십시오, 당신은 결코 그것을 읽지 않습니다. –