Advertisement
codegod313

Mul_m

Aug 3rd, 2020 (edited)
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <cstdlib>
  4. #include <locale.h>
  5.  
  6.  
  7. void inputer(int &a)
  8. {
  9.     while (!scanf("%d",&a) && a < 0)
  10.     {
  11.         fflush(stdin);
  12.         printf("Enter again\n");
  13.     }
  14. }
  15.  
  16. void matrix_in(int ** &a, int n, int m)
  17. {
  18.     for (int i = 0; i < n; i++)
  19.     {
  20.         a[i] = (int *)malloc(sizeof(int)*m);
  21.         for (int j = 0; j < m; j++)
  22.             inputer(a[i][j]);
  23.     }
  24. }
  25.  
  26. void matrix_out(int **a, int n, int m)
  27. {
  28.     for (int i = 0; i < n; i++)
  29.     {
  30.         for (int j = 0; j < m; j++)
  31.         {
  32.             printf("%d ", a[i][j]);
  33.         }
  34.         printf("\n");
  35.     }
  36. }
  37.  
  38. int main()
  39. {
  40.     setlocale(LC_ALL, "Russian");
  41.     int n1, n2, m1, m2;
  42.     printf("Введите размерности матриц\n");
  43.     inputer(n1);
  44.     inputer(m1);
  45.     inputer(n2);
  46.     inputer(m2);
  47.     if (m1 != n2)
  48.     {
  49.         printf("Перемножение невозможно\n");
  50.         return 0;
  51.     }
  52.     printf("Введите первую матрицу\n");
  53.     int**a = (int **)malloc(sizeof(int*)*n1);
  54.     matrix_in(a, n1, m1);
  55.     printf("Введите вторую матрицу\n");
  56.     int**b = (int **)malloc(sizeof(int*)*n2);
  57.     matrix_in(b, n2, m2);
  58.     int **c = (int **)malloc(sizeof(int *) * n1);
  59.     for (int i = 0; i < n1; i++)
  60.     {
  61.         c[i] = (int *)malloc(sizeof(int)*m2);
  62.     }
  63.     int i_c = 0, j_c = 0;
  64.     for (int i = 0; i < n1; i++)
  65.     {
  66.         for (int k = 0; k < m2; k++)
  67.         {
  68.             int sum = 0;
  69.             for (int j = 0; j < m1; j++)
  70.             {
  71.                 sum += a[i][j] * b[j][k];
  72.             }
  73.             c[i_c][j_c++] = sum;
  74.             if (j_c == m2)
  75.             {
  76.                 i_c++;
  77.                 j_c = 0;
  78.             }
  79.         }
  80.     }
  81.     printf("Готовая матрца\n");
  82.     matrix_out(c, n1, m2);
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement