Перемножение матриц - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д