두 개의 텍스트 파일에서 행렬을 읽는 코드를 받았습니다. (올바른 가정) 나는 두 행렬을 함께 배수하는 함수를 생각해 내야합니다. C : 이중 포인터를 사용하는 행렬 곱셈
이
는 주어진 함수의 프로토 타입입니다 : c를, 나는 결과 행렬 공간을 할당malloc
전화를해야
int** matMult(int **a, int num_rows_a, int num_cols_a, int** b, int num_rows_b, int num_cols_b){
int **c;
c = (int**)malloc(sizeof(int*)*num_rows_a);
// c = calloc(num_rows_a, num_cols_b);
for (int i = 0; i < num_rows_a; i++) {
for (int j = 0; j < num_cols_b; j++) {
int sum = 0;
for (int k = 0; k < num_cols_a; k++) {
c[i][j] = a[i][k] * b[k][j] + sum;
sum = c[i][j]; //so that previous answer gets stored
}
}
}
return c;
}
: 여기
int** matMult(int **a, int num_rows_a, int num_cols_a, int** b, int num_rows_b, int num_cols_b);
그리고 함수 내 코드입니다
또한 Xcode에서 얻는 문제는 다음과 같습니다. EXC_BAD_ACCESS
더 많은 메모리를 할당해야합니다. 행에 포인터를 할당했지만 각 행을 할당하지 않았습니다. 이 문제를 고려할 때 입력 행렬을 할당하는 코드를 표시해야 할 수 있습니다. 사실, NxM 행렬에 대한 메모리를 할당하는 단일 함수가 있어야하며, 각 행렬을 할당하는 데 사용할 수 있습니다. 반환 된 행렬의 크기를 어떻게 알 수 있는지 생각할 필요가 있습니다. –