#include using namespace std; struct Matran { float m[100][100]; int row; int col; }; void NhapMaTran(Matran &a) { cout << "Nhap so hang cua ma tran:"; cin >> a.row; cout << "Nhap so cot cua ma tran:"; cin >> a.col; for (int i = 0; i < a.row; i++) { for (int j = 0; j < a.col; j++) { cout << "a[" << i << "][" << j << "] = "; cin >> a.m[i][j]; } } } void XuatMaTran(Matran a) { for (int i = 0; i < a.row; i++) { for (int j = 0; j < a.col; j++) { cout << a.m[i][j] << "\t"; } cout << endl; } } void Sumof2Matrix(Matran a, Matran b) { if (a.row != b.row || a.col != b.col) cout << "Hai ma tran khong co cung kich thuoc" << endl; else { cout << "Tong cua 2 ma tran la:" << endl; for (int i = 0; i < a.row; i++) { for (int j = 0; j < a.col; j++) { int sum = a.m[i][j] + b.m[i][j]; cout << sum << "\t"; } cout << endl; } } } int MagicSquare(Matran a) { if (a.row != a.col) cout << "Day khong phai la magic square"; else { float array[100]; int u = -1; for (int i = 0; i < a.row; i++) { float sum1 = 0; for (int j = 0; j < a.col; j++) { sum1 += a.m[i][j]; } array[++u] = sum1; } for (int i = 0; i < a.col; i++) { float sum2 = 0; for (int j = 0; j < a.row; j++) { sum2 += a.m[j][i]; } array[++u] = sum2; } float sum3=0; for (int i = 0; i < a.row; i++) sum3 += a.m[i][i]; array[++u] = sum3; float sum4 = 0; for (int i = 0; i < a.col; i++) { for (int j = 0; j < a.row; j++) { if(i+j==a.row-1) sum4 += a.m[i][j]; } } array[++u] = sum4; for (int i = 1; i <= u; i++) { if (array[0] != array[i]) return 0; } } return 1; } void main() { Matran x,y; cout << "Nhap ma tran:" << endl; NhapMaTran(x); cout << endl; cout << "===============Menu=====================" << endl; cout << " 1: Xuat ma tran vua nhap" << endl; cout << " 2: Tinh tong 2 ma tran" << endl; cout << " 3: Kiem tra 'Magic Square' " << endl; cout << " 4: Exit " << endl; cout << " =======================================" << endl; int k; do { cout << "Nhap so cau:"; cin >> k; switch (k) { case 1: XuatMaTran(x); cout << endl; break; case 2: cout << "Nhap ma tran thu hai:" << endl; NhapMaTran(y); Sumof2Matrix(x, y); cout << endl; break; case 3:if (MagicSquare(x)) cout << "Yes" << endl; else cout << "No" << endl; break; default: return; } } while (k > 0 && k < 4); }