Перемножение матриц - C (СИ) (149763)
Формулировка задачи:
С умножением беда совсем...Причем последний столбец нормальный, а остальные нет.
Помогите, пожалуйста, найти ошибки в программе.
Мне кажется, где-то с выделением памяти накосячил, ибо в этой теме не особо силен.
Умножение матрицы [mxn] и [nxs]
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, k, m, n, s;
float **A;
float **B;
float **C;
float c;
m = 2;
n = 3;
s = 4;
A = new float *[m];
for (i = 0; i < m; i++)
A[i] = new float[n];
B = new float *[n];
for (i = 0; i < n; i++)
B[i] = new float[s];
C = new float *[s];
for (i = 0; i < m; i++)
C[i] = new float[s];
printf("A: \n");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
A[i][j] = rand() % 10;
printf("%.2f \t", A[i][j]);
}
printf("\n");
}
printf("B: \n");
for (i = 0; i < n; i++)
{
for (j = 0; j < s; j++)
{
B[i][j] = rand() % 10;
printf("%.2f \t", B[i][j]);
}
printf("\n");
}
printf("\n");
for (i = 0; i < m; i++)
for (k = 0; k < s; k++)
{
c = 0;
for (j = 0; j < n; j++)
c = c + A[i][j] * B[j][k];
C[i][j] = c;
}
printf("C: \n");
for (i = 0; i < m; i++)
{
for (j = 0; j < s; j++)
{
printf("%.2f \t", C[i][j]);
}
printf("\n");
}
for (i = 0; i < m; i++)
delete[]A[i];
delete[]A;
A = NULL;
for (i = 0; i < n; i++)
delete[]B[i];
delete[]B;
for (i = 0; i < m; i++)
delete[]C[i];
delete[]C;
getch();
}Решение задачи: «Перемножение матриц»
textual
Листинг программы
**At=transposition(A, m, n);
Объяснение кода листинга программы
- At=transposition(A, m, n);
В данном коде происходит перемножение матрицы A с транспонированной матрицей A.
Значения переменных:
- At - результат перемножения матриц A и Aт (транспонированная матрица A)
- A - исходная матрица
- m - количество строк в матрице A
- n - количество столбцов в матрице A