Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <cstdlib>
- #include <locale.h>
- void inputer(int &a)
- {
- while (!scanf("%d",&a) && a < 0)
- {
- fflush(stdin);
- printf("Enter again\n");
- }
- }
- void matrix_in(int ** &a, int n, int m)
- {
- for (int i = 0; i < n; i++)
- {
- a[i] = (int *)malloc(sizeof(int)*m);
- for (int j = 0; j < m; j++)
- inputer(a[i][j]);
- }
- }
- void matrix_out(int **a, int n, int m)
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- {
- printf("%d ", a[i][j]);
- }
- printf("\n");
- }
- }
- int main()
- {
- setlocale(LC_ALL, "Russian");
- int n1, n2, m1, m2;
- printf("Введите размерности матриц\n");
- inputer(n1);
- inputer(m1);
- inputer(n2);
- inputer(m2);
- if (m1 != n2)
- {
- printf("Перемножение невозможно\n");
- return 0;
- }
- printf("Введите первую матрицу\n");
- int**a = (int **)malloc(sizeof(int*)*n1);
- matrix_in(a, n1, m1);
- printf("Введите вторую матрицу\n");
- int**b = (int **)malloc(sizeof(int*)*n2);
- matrix_in(b, n2, m2);
- int **c = (int **)malloc(sizeof(int *) * n1);
- for (int i = 0; i < n1; i++)
- {
- c[i] = (int *)malloc(sizeof(int)*m2);
- }
- int i_c = 0, j_c = 0;
- for (int i = 0; i < n1; i++)
- {
- for (int k = 0; k < m2; k++)
- {
- int sum = 0;
- for (int j = 0; j < m1; j++)
- {
- sum += a[i][j] * b[j][k];
- }
- c[i_c][j_c++] = sum;
- if (j_c == m2)
- {
- i_c++;
- j_c = 0;
- }
- }
- }
- printf("Готовая матрца\n");
- matrix_out(c, n1, m2);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement