Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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[100][100], int n, int m) // функция ввода матрицы
- {
- for (int i = 0; i < n; i++)
- {
- for (int j = 0; j < m; j++)
- inputer(a[i][j]);
- }
- }
- void matrix_out(int a[100][100], 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[100][100]; // создаём первую матрицу
- matrix_in(a, n1, m1); // вводим первую матрицу
- printf("Введите вторую матрицу\n");
- int b[100][100]; // создаём вторую матрицу
- matrix_in(b, n2, m2); // вводим вторую матрицу
- int c[100][100]; // матрица-результат
- int i_c = 0, j_c = 0; // эти i и j указывают на просчитываемый элемент в результируюцей матрице
- for (int i = 0; i < n1; i++) // цикл по строкам матрицы a
- {
- for (int k = 0; k < m2; k++) // цикл по столбцам матрицы b
- {
- int sum = 0;
- for (int j = 0; j < m1; j++) // цикл по столбцам матрицы a
- {
- sum += a[i][j] * b[j][k]; // перемножаем каждую строку матрицы а на каждый столбец матрицы b (k - столбец матрицы b)
- }
- 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