Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ตรวจสอบว่า Matrix เป็น Magic Square หรือไม่ใน C++

ในบทความนี้เราจะตรวจสอบว่า Matrix เป็น Magic Square หรือไม่ Magic Square คือ Square Matrix ที่ผลรวมของแต่ละ Row, แต่ละ Column และแต่ละ Diagonal เหมือนกันทั้งหมด

ตัวอย่าง Matrix:

618
753
294

นี่คือ Magic Square เพราะผลรวม Row, Column, Diagonal ทุกอย่างคือ 15

วิธีตรวจสอบ: หาผลรวม Major Diagonal และ Secondary Diagonal ถ้าเท่ากัน แล้วตรวจสอบ Row และ Column ทุกตัวว่าตรงกับค่านั้นหรือไม่

ตัวอย่างโค้ด C++

#include <iostream>
#define N 3
using namespace std;

bool isMagicSquare(int mat[][N]) {
    int sum_diag = 0, sum_diag_second = 0;
    for (int i = 0; i < N; i++)
        sum_diag = sum_diag + mat[i][i];
    for (int i = 0; i < N; i++)
        sum_diag_second = sum_diag_second + mat[i][N-1-i];
    if(sum_diag != sum_diag_second)
        return false;
    for (int i = 0; i < N; i++) {
        int rowSum = 0;
        for (int j = 0; j < N; j++)
            rowSum += mat[i][j];
        if (rowSum != sum_diag)
            return false;
    }
    for (int i = 0; i < N; i++) {
        int colSum = 0;
        for (int j = 0; j < N; j++)
            colSum += mat[j][i];
        if (sum_diag != colSum)
            return false;
    }
    return true;
}

int main() {
    int mat[][N] = {{ 6, 1, 8 }, { 7, 5, 3 }, { 2, 9, 4 }};
    if (isMagicSquare(mat))
        cout << "It is Magic Square";
    else
        cout << "It is Not a magic Square";
}

ผลลัพธ์

It is Magic Square