Создать процедуру, перемножающую две матрицы по правилам матричного умножения - C (СИ)
Формулировка задачи:
Создать процедуру, перемножающую две матрицы по правилам матричного умножения. Предусмотреть случай, когда размеры матриц заданы некорректно.
Не выдает матрицу
#include <stdio.h> #include <conio.h> #include <math.h> #include <time.h> #include <stdlib.h> // прототипы функций void vorm_mass(int pp, int yy, int mass[pp][yy]); void multi (int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb]); int main() { int i, j, p, a, b, y; printf("\nEnter the number of lines matrix A:"); scanf("%d", &p); printf("\nEnter the number of columns matrix A:"); scanf("%d", &y); printf("\nEnter the number of lines matrix B:"); scanf("%d", &a); printf("\nEnter the number of columns matrix B:"); scanf("%d", &b); int massiv[p][y]; int massivf[a][b]; printf("\nInitial array A:\n"); vorm_mass(p, y, massiv); for (i=0; i<p; i++) { for (j=0; j<y; j++) printf("%5d", massiv[i][j]); printf("\n"); } printf("\n"); printf("\nInitial array B:\n"); vorm_mass(a, b, massivf); for (i=0; i<a; i++) { for (j=0; j<b; j++) printf("%5d", massivf[i][j]); printf("\n"); } printf("\n"); if (y==a) { multi (p, y, a, b, massiv, massivf); } else printf("\nMatrices can not be multiplied"); return 0; } //описание функций // 1. формирование массива void vorm_mass(int pp, int yy, int mass[pp][yy]) { int i, j; time_t t; // текущее время для инициализации // генератора случайных чисел srand((unsigned) time(&t)); // инициализация генератора // случайных чисел for (i=0; i<pp; i++) for (j=0; j<yy; j++) mass[i][j]=rand()% 100; } void multi(int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb]) { int i, j, k, r, e; int mu[r][e]; for (i=0;i<pp; i++){ for(j=0; j<bb;j++) {mu[i][j]=0; for (k=0; k<yy; k++) mu[i][j] += mass[pp][k]*massf[k][bb]; }} printf("\nMultiplication of the matrix A and B:\n"); for (i=0;i<pp; i++){ for(j=0; j<bb;j++) printf("%5d", mu[i][j]); printf("\n"); } }
Решение задачи: «Создать процедуру, перемножающую две матрицы по правилам матричного умножения»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #include <math.h> #include <time.h> #include <stdlib.h> // прототипы функций void vorm_mass(int pp, int yy, int mass[pp][yy]); void multi (int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb]); int main() { int i, j, p, a, b, y, ii, jj; printf("\nEnter the number of lines matrix A:"); scanf("%d", &p); printf("\nEnter the number of columns matrix A:"); scanf("%d", &y); printf("\nEnter the number of lines matrix B:"); scanf("%d", &a); printf("\nEnter the number of columns matrix B:"); scanf("%d", &b); int massiv[p][y]; int massivf[a][b]; printf("\nInitial array A:\n"); vorm_mass(p, y, massiv); for (i=0; i<p; i++) { for (j=0; j<y; j++) printf("%5d", massiv[i][j]); printf("\n"); } printf("\n"); printf("\nInitial array B:\n"); vorm_mass(a, b, massivf); for (ii=0; ii<a; ii++) { for (jj=0; jj<b; jj++) printf("%5d", massivf[ii][jj]); printf("\n"); } printf("\n"); if (y==a) { multi (i, j, ii, jj, massiv, massivf); } else printf("\nMatrices can not be multiplied"); return 0; } void vorm_mass(int pp, int yy, int mass[pp][yy]) { int i, j; time_t t; srand((unsigned) time(&t)); for (i=0; i<pp; i++) for (j=0; j<yy; j++) mass[i][j]=rand()% 10; } void multi(int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb]) { int i, j, k; int mu[0][0]; for (k=0;k<pp; k++) { for(j=0; j<bb;j++) {mu[k][j]=0; for (i=0; i<yy; i++) mu[k][j] += mass[k][j]*massf[i][j]; }} printf("\nMultiplication of the matrix A and B:\n"); for (i=0;i<pp; i++) { for(j=0; j<bb;j++) printf("%5d", mu[i][j]); printf("\n"); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д