Умножение матриц с помощью указателей в 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));
Другие вопросы по тегам