Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Kiểm tra ma trận đường chéo và ma trận scalar trong C++

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.

Kiểm tra ma trận đường chéo và ma trận scalar trong C++

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.

Kiểm tra ma trận đường chéo và ma trận scalar trong C++

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