Умножение матриц с помощью указателей в C
Я пытаюсь создать метод, который выглядит так: void Multiply(double *A, double *B, double *C, int N);
Это функция, которая вычисляет C = A * B
,
A, B и C - NxN(квадратные) матрицы, и я должен сделать это с помощью указателей.
Код, который я написал, выглядит следующим образом:
int Multiply(double *A, double *B, double *C, int N){
int i,j,k;
double sum;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
sum = 0;
for (k = 0; k < N; k++) {
sum = sum + (*(A+i*N+k)) * (*(B+k*N+i));
}
*(C+i*N+j) = sum;
}
}
}
Это не вызывает никаких ошибок, а также не работает.
Я не вижу проблемы. Пожалуйста, кто-нибудь может помочь?
1 ответ
Решение
i,j
элемент C
это строка i
из A
умножить на j
столбец B
, Ядро ваших циклов должно быть:
sum = sum + (*(A+i*N+k)) * (*(B+k*N+j));