/**
* @file lab5.3.cpp
*@author Ткаченко Є.С., гр. 515і
*@date 26 квітня 2023
*@brief Лабораторна робота № 5, варіант 7
*
* Завдання 3. Застосування вказівників.
*/
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
void mul_square_matrix(int* m1, int* m2, int* m3, int n) {
int i, j, k;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
*(m3 + i * n + j) = 0;
for (k = 0; k < n; k++) {
*(m3 + i * n + j) += *(m1 + i * n + k) * *(m2 + k * n + j);
}
}
}
}
int main() {
setlocale(LC_ALL, "Ukr");
int n, i, j;
printf("Введiть розмiр матрицi: ");
scanf("%d", &n);
int* m1 = (int*)malloc(n * n * sizeof(int));
int* m2 = (int*)malloc(n * n * sizeof(int));
int* m3 = (int*)malloc(n * n * sizeof(int));
printf("Введiть елементи першої матрицi:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", m1 + i * n + j);
}
}
printf("Введiть елементи другої матрицi:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
scanf("%d", m2 + i * n + j);
}
}
mul_square_matrix(m1, m2, m3, n);
printf("Результат множення:\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf("%5d ", *(m3 + i * n + j));
}
printf("\n");
}
free(m1);
free(m2);
free(m3);
return 0;
}