Создать процедуру, перемножающую две матрицы по правилам матричного умножения - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Создать процедуру, перемножающую две матрицы по правилам матричного умножения. Предусмотреть случай, когда размеры матриц заданы некорректно.
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6. // прототипы функций
  7. void vorm_mass(int pp, int yy, int mass[pp][yy]);
  8. void multi (int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb]);
  9. int main()
  10. {
  11. int i, j, p, a, b, y;
  12. printf("\nEnter the number of lines matrix A:");
  13. scanf("%d", &p);
  14. printf("\nEnter the number of columns matrix A:");
  15. scanf("%d", &y);
  16. printf("\nEnter the number of lines matrix B:");
  17. scanf("%d", &a);
  18. printf("\nEnter the number of columns matrix B:");
  19. scanf("%d", &b);
  20.  
  21. int massiv[p][y];
  22. int massivf[a][b];
  23. printf("\nInitial array A:\n");
  24. vorm_mass(p, y, massiv);
  25. for (i=0; i<p; i++)
  26. {
  27. for (j=0; j<y; j++)
  28. printf("%5d", massiv[i][j]);
  29. printf("\n");
  30. }
  31. printf("\n");
  32. printf("\nInitial array B:\n");
  33. vorm_mass(a, b, massivf);
  34. for (i=0; i<a; i++)
  35. {
  36. for (j=0; j<b; j++)
  37. printf("%5d", massivf[i][j]);
  38. printf("\n");
  39. }
  40. printf("\n");
  41. if (y==a)
  42. {
  43. multi (p, y, a, b, massiv, massivf);
  44. }
  45. else printf("\nMatrices can not be multiplied");
  46.  
  47. return 0;
  48. }
  49. //описание функций
  50. // 1. формирование массива
  51. void vorm_mass(int pp, int yy, int mass[pp][yy])
  52. {
  53. int i, j;
  54. time_t t; // текущее время для инициализации
  55. // генератора случайных чисел
  56. srand((unsigned) time(&t)); // инициализация генератора
  57. // случайных чисел
  58.  
  59. for (i=0; i<pp; i++)
  60. for (j=0; j<yy; j++)
  61. mass[i][j]=rand()% 100;
  62. }
  63.  
  64. void multi(int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb])
  65. {
  66. int i, j, k, r, e;
  67. int mu[r][e];
  68. for (i=0;i<pp; i++){
  69. for(j=0; j<bb;j++)
  70. {mu[i][j]=0;
  71. for (k=0; k<yy; k++)
  72. mu[i][j] += mass[pp][k]*massf[k][bb];
  73. }}
  74. printf("\nMultiplication of the matrix A and B:\n");
  75. for (i=0;i<pp; i++){
  76. for(j=0; j<bb;j++)
  77. printf("%5d", mu[i][j]);
  78. printf("\n");
  79. }
  80. }
Не выдает матрицу

Решение задачи: «Создать процедуру, перемножающую две матрицы по правилам матричного умножения»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <math.h>
  4. #include <time.h>
  5. #include <stdlib.h>
  6.  
  7.                 // прототипы функций
  8.  
  9. void vorm_mass(int pp, int yy,  int mass[pp][yy]);
  10. void multi (int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb]);
  11.  
  12. int main()
  13. {
  14.     int i, j,   p,  a, b, y, ii, jj;
  15.  
  16.  
  17.  
  18.     printf("\nEnter the number of lines matrix A:");
  19.     scanf("%d", &p);
  20.     printf("\nEnter the number of columns matrix A:");
  21.     scanf("%d", &y);
  22.     printf("\nEnter the number of lines matrix B:");
  23.     scanf("%d", &a);
  24.     printf("\nEnter the number of columns matrix B:");
  25.     scanf("%d", &b);
  26.  
  27.  
  28.  
  29.     int massiv[p][y];
  30.     int massivf[a][b];
  31.  
  32.     printf("\nInitial array A:\n");
  33.  
  34.    vorm_mass(p, y,  massiv);
  35.  
  36.     for (i=0; i<p; i++)
  37.     {
  38.         for (j=0; j<y; j++)
  39.             printf("%5d", massiv[i][j]);
  40.         printf("\n");
  41.     }
  42.  
  43.     printf("\n");
  44.     printf("\nInitial array B:\n");
  45.  
  46.     vorm_mass(a, b,  massivf);
  47.  
  48.     for (ii=0; ii<a; ii++)
  49.     {
  50.         for (jj=0; jj<b; jj++)
  51.             printf("%5d", massivf[ii][jj]);
  52.         printf("\n");
  53.     }
  54.  
  55.     printf("\n");
  56.     if (y==a)
  57.         {
  58.  
  59.     multi (i, j, ii, jj, massiv, massivf);
  60.  
  61.     }
  62.     else printf("\nMatrices can not be multiplied");
  63.  
  64.  
  65.     return 0;
  66. }
  67.  
  68. void vorm_mass(int pp, int yy,  int mass[pp][yy])
  69. {
  70.     int i, j;
  71.     time_t t;
  72.  
  73.     srand((unsigned) time(&t));
  74.  
  75.     for (i=0; i<pp; i++)
  76.         for (j=0; j<yy; j++)
  77.             mass[i][j]=rand()% 10;
  78. }
  79.  
  80.  
  81.  
  82. void multi(int pp, int yy, int aa, int bb, int mass[pp][yy], int massf [aa][bb])
  83.  
  84. {
  85.     int i, j, k;
  86.     int mu[0][0];
  87.  
  88.     for (k=0;k<pp; k++)
  89.         {
  90.         for(j=0; j<bb;j++)
  91.     {mu[k][j]=0;
  92.  
  93.         for (i=0; i<yy; i++)
  94.             mu[k][j] += mass[k][j]*massf[i][j];
  95.  
  96.     }}
  97.     printf("\nMultiplication of the matrix A and B:\n");
  98.  
  99.     for (i=0;i<pp; i++)
  100.         {
  101.         for(j=0; j<bb;j++)
  102.             printf("%5d", mu[i][j]);
  103.         printf("\n");
  104.  
  105.         }
  106. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут