#include <iostream>
#define COLS1 3
#define COLS2 2
// If matrix size is constant
void multiplyMatrices2x3By3x2(const int matrix1[][COLS1], const int matrix2[][COLS2],
const int rows1, int result[][COLS2]) {
for (unsigned int i = 0; i < rows1; i++) { // i (rows) = 0, 1
for (unsigned int j = 0; j < COLS2; j++) { // j (cols) = 0, 1
result[i][j] = matrix1[i][0] * matrix2[0][j] +
matrix1[i][1] * matrix2[1][j] +
matrix1[i][2] * matrix2[2][j];
}
}
}
int main() {
int matrix1[][COLS1] = { {1, 2, 3},
{4, 5, 6} };
int matrix2[][COLS2] = { {10, 11},
{20, 21},
{30, 31} };
int result[][COLS2] = { {0, 0},
{0, 0} };
int rows1 = sizeof(matrix1) / sizeof(matrix1[0]);
multiplyMatrices2x3By3x2(matrix1, matrix2, rows1, result);
std::cout << "Final result:\n";
for (int i = 0; i < rows1; i++) {
for (int j = 0; j < COLS2; j++)
std::cout << result[i][j] << " ";
std::cout << "\n";
}
}
/*
run:
Final result:
140 146
320 335
*/