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