Cho ma trận vuông M. Kiểm tra ma trận đường chéo (diagonal) và ma trận scalar.
Ma trận đường chéo (Diagonal Matrix)
Ma trận vuông mà các phần tử ngoài đường chéo chính đều bằng 0.

Ví dụ
Input: {{7,0,0},{0,8,0},{0,0,9}} → Có
Input: {{1,2,3},{0,4,0},{0,0,5}} → Không
Thuật toán
BẮT ĐẦU
#define size 4
Hàm laDuongCheo(int a[size][size])
Với i,j: nếu i!=j và a[i][j]!=0 → false
Trả về true
main()
a = ma trận đơn vị 4x4
Kiểm tra và in kết quả
KẾT THÚC
Ví dụ mã C++ - Ma trận đường chéo
#include <bits/stdc++.h>
#define size 4
using namespace std;
bool laDuongCheo(int a[size][size]){
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
if ((i != j) && (a[i][j] != 0))
return false;
return true;
}
int main(){
int a[size][size] = {{1,0,0,0},{0,1,0,0},{0,0,1,0},{0,0,0,1}};
if (laDuongCheo(a))
cout << "là ma trận đường chéo" << endl;
else
cout << "không phải ma trận đường chéo" << endl;
return 0;
}
Kết quả đầu ra
là ma trận đường chéo
Ma trận Scalar (Scalar Matrix)
Ma trận đường chéo mà các phần tử trên đường chéo chính bằng nhau.

Ví dụ
Input: {{2,0,0},{0,2,0},{0,0,2}} → Có
Input: {{3,0,0},{0,2,0},{0,0,3}} → Không
Thuật toán
BẮT ĐẦU
#define size 4
Hàm laScalar(int a[size][size])
Kiểm tra phần tử ngoài đường chéo = 0
Kiểm tra các phần tử đường chéo bằng nhau
Trả về true/false
main()
a = {{2,0,0,0},{0,2,0,0},{0,0,2,0},{0,0,0,2}}
Kiểm tra và in kết quả
KẾT THÚC
Ví dụ mã C++ - Ma trận Scalar
#include <bits/stdc++.h>
#define size 4
using namespace std;
bool laScalar(int a[size][size]){
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
if ((i != j) && (a[i][j] != 0))
return false;
for (int i = 0; i < size - 1; i++)
if (a[i][i] != a[i+1][i+1])
return false;
return true;
}
int main(){
int a[size][size] = {{2,0,0,0},{0,2,0,0},{0,0,2,0},{0,0,0,2}};
if (laScalar(a))
cout << "là ma trận scalar" << endl;
else
cout << "không phải ma trận scalar" << endl;
return 0;
}
Kết quả đầu ra
là ma trận scalar