Я пытался выполнять вычисления базовой матрицы в C, но умножение двух матриц вместе всегда возвращает значение 0. После прочтения других, у кого были подобные проблемы, я до сих пор не понимаю, почему это происходит. Вот функция умножения:Матрица Умножение в C всегда возвращается 0?
double** MatrixMultiplication(double** matrixA, double** matrixB,
int sizeXA, int sizeYA, int sizeXB, int sizeYB)
{
double** matrixC = MatrixAllocate(sizeXA, sizeYB);
for (int i = 0; i < sizeXA; i++) {
for (int j = 0; j < sizeYB; j++) {
for (int k = 0; k < sizeXA; k++) {
matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
}
}
}
return matrixC;
}
И это код функции MatrixAllocate
:
double** MatrixAllocate(int sizeX, int sizeY) {
double **matrix;
matrix = (double**)malloc(sizeX*sizeof(double*));
for (int i = 0; i < sizeX; i++)
matrix[i] = (double*)malloc(sizeY*sizeof(double));
for (int i = 0; i < sizeX; i++) {
for (int j = 0; j < sizeY; j++) {
matrix[i][j] = 0;
}
}
return matrix;
}
Обе матрицы А и MatrixB заполнены пользователем, и при печати они имеют данные ненулевую.
Возвращаемое значение 0 означает, что эта матрица имеет все элементы 0 или вывод matrixC от MatrixMultiplication - NULL? –
У вас есть ошибка здесь: 'for (int k = 0; k
Вам не нужно указывать возвращаемое значение 'malloc' в программе на C. –