#include <iostream>
#include <iomanip>
#define N 3
class calc {
public:
void print(int arr2d[][N]);
int multiply(int a[][N], int b[][N], int i, int j);
};
void calc::print(int arr2d[][N]) {
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
std::cout << std::setw(4) << arr2d[i][j];
std::cout << "\n";
}
}
int calc::multiply(int a[][N], int b[][N], int i, int j) {
int sum = 0;
for (int x = 0; x < N; x++)
sum += a[i][x] * b[x][j];
return sum;
}
int main()
{
int a[N][N] = { { 1, 8, 5 },{ 6, 7, 1 },{ 8, 7, 6 } };
int b[N][N] = { { 4, 8, 1 },{ 6, 5, 3 },{ 4, 6, 5 } };
int c[N][N];
calc clc;
clc.print(a);
std::cout << "\n";
clc.print(b);
std::cout << "\n";
// c[0, 0] = (a[0, 0] * b[0, 0]) + (a[0, 1] * b[1, 0]) + (a[0, 2] * b[2, 0])
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
c[i][j] = clc.multiply(a, b, i, j);
clc.print(c);
return 0;
}
/*
run:
1 8 5
6 7 1
8 7 6
4 8 1
6 5 3
4 6 5
72 78 50
70 89 32
98 135 59
*/