#include class Matrix3x3 { public: double A[3][3]; Matrix3x3 operator*(Matrix3x3 &m2) { Matrix3x3 out; int i, j, k; for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 3; j = j + 1) { out.A[i][j] = 0.0; for (k = 0; k < 3; k = k + 1) out.A[i][j] = out.A[i][j] + A[i][k]*m2.A[k][j]; } } return(out); } }; void operator<<( ostream & output, Matrix3x3 &x ) { int i, j; for (i = 0; i < 3; i = i + 1) { for (j = 0; j < 3; j = j + 1) output << " " << x.A[i][j]; output << endl; } } int main(int argc, char *argv[]) { Matrix3x3 A, B, C; A.A[0][0] = 1.0; A.A[0][1] = 0.0; A.A[0][2] = 0.0; A.A[1][0] = 1.0; A.A[1][1] = 1.0; A.A[1][2] = 1.0; A.A[2][0] = 1.0; A.A[2][1] = 0.0; A.A[2][2] = 0.0; cout << "\nInitial matrix A:" << endl; cout << A; cout << endl; B.A[0][0] = 1.0; B.A[0][1] = 2.0; B.A[0][2] = 3.0; B.A[1][0] = 4.0; B.A[1][1] = 5.0; B.A[1][2] = 6.0; B.A[2][0] = 7.0; B.A[2][1] = 8.0; B.A[2][2] = 9.0; cout << "\nInitial matrix B:" << endl << endl; cout << A; cout << endl; C = A * B; cout << endl << "\nAfter C = A * B, matrix C:" << endl << endl; cout << C; cout << endl; C = B * A; cout << endl << "\nAfter C = B * A, matrix C:" << endl << endl; cout << C; cout << endl; }