Program to Check if Given Matrix is Magic Matrix or Not
- Write a program to Check if Given Matrix is Magic Matrix or Not in C
- Write a program to Check if Given Matrix is Magic Matrix or Not in C++
- Write a program to Check if Given Matrix is Magic Matrix or Not in Python
- Write a program to Check if Given Matrix is Magic Matrix or Not in PHP
- Write a program to Check if Given Matrix is Magic Matrix or Not in Java
- Write a program to Check if Given Matrix is Magic Matrix or Not in Java Script
- Write a program to Check if Given Matrix is Magic Matrix or Not in C#
Explanation:
To check if a given matrix is a magic matrix (or magic square), the following conditions must be satisfied:
- Square Matrix:
- The matrix must be n × n (same number of rows and columns).
- Equal Sum of Rows, Columns, and Diagonals:
- The sum of elements in each row, each column, and the two diagonals should be the same.
Steps:
- Input:
- Read an n×nn \times nn×n matrix.
- Compute the Target Sum:
- Calculate the sum of the first row (or column) as the target sum.
- Verify the Rows:
- Check if the sum of elements in each row equals the target sum.
- Verify the Columns:
- Check if the sum of elements in each column equals the target sum.
- Verify the Diagonals:
- Check if the sum of the main diagonal (i = j) and secondary diagonal (i + j = n −1 ) equals the target sum.
- Output:
- If all checks pass, the matrix is a magic matrix; otherwise, it is not.
Program to Check if Given Matrix is Magic Matrix or Not
-
C
-
C++
-
Python
-
PHP
-
JAVA
-
Java Script
-
C#
#include <stdio.h>
#include <stdbool.h>
bool isMagicMatrix(int matrix[3][3], int n) {
int sumDiagonal1 = 0, sumDiagonal2 = 0;
// Sum of the first diagonal
for (int i = 0; i < n; i++) {
sumDiagonal1 += matrix[i][i];
sumDiagonal2 += matrix[i][n - 1 - i];
}
// Check if diagonals are not equal
if (sumDiagonal1 != sumDiagonal2)
return false;
// Sum of each row and column
for (int i = 0; i < n; i++) {
int rowSum = 0, colSum = 0;
for (int j = 0; j < n; j++) {
rowSum += matrix[i][j];
colSum += matrix[j][i];
}
if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
return false;
}
return true;
}
int main() {
int matrix[3][3] = {
{8, 1, 6},
{3, 5, 7},
{4, 9, 2}
};
if (isMagicMatrix(matrix, 3))
printf("The given matrix is a Magic Matrix.\n");
else
printf("The given matrix is NOT a Magic Matrix.\n");
return 0;
}
#include <iostream>
using namespace std;
bool isMagicMatrix(int matrix[3][3], int n) {
int sumDiagonal1 = 0, sumDiagonal2 = 0;
// Sum of the first diagonal
for (int i = 0; i < n; i++) {
sumDiagonal1 += matrix[i][i];
sumDiagonal2 += matrix[i][n - 1 - i];
}
// Check if diagonals are not equal
if (sumDiagonal1 != sumDiagonal2)
return false;
// Sum of each row and column
for (int i = 0; i < n; i++) {
int rowSum = 0, colSum = 0;
for (int j = 0; j < n; j++) {
rowSum += matrix[i][j];
colSum += matrix[j][i];
}
if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
return false;
}
return true;
}
int main() {
int matrix[3][3] = {
{8, 1, 6},
{3, 5, 7},
{4, 9, 2}
};
if (isMagicMatrix(matrix, 3))
cout << "The given matrix is a Magic Matrix." << endl;
else
cout << "The given matrix is NOT a Magic Matrix." << endl;
return 0;
}
def is_magic_matrix(matrix):
n = len(matrix)
sum_diagonal1 = sum(matrix[i][i] for i in range(n))
sum_diagonal2 = sum(matrix[i][n - 1 - i] for i in range(n))
# Check if diagonals are not equal
if sum_diagonal1 != sum_diagonal2:
return False
# Check each row and column
for i in range(n):
if sum(matrix[i]) != sum_diagonal1 or sum(matrix[j][i] for j in range(n)) != sum_diagonal1:
return False
return True
matrix = [
[8, 1, 6],
[3, 5, 7],
[4, 9, 2]
]
if is_magic_matrix(matrix):
print("The given matrix is a Magic Matrix.")
else:
print("The given matrix is NOT a Magic Matrix.")
<?php
function isMagicMatrix($matrix, $n) {
$sumDiagonal1 = 0;
$sumDiagonal2 = 0;
// Sum of the diagonals
for ($i = 0; $i < $n; $i++) {
$sumDiagonal1 += $matrix[$i][$i];
$sumDiagonal2 += $matrix[$i][$n - 1 - $i];
}
// Check if diagonals are not equal
if ($sumDiagonal1 != $sumDiagonal2) {
return false;
}
// Check each row and column
for ($i = 0; $i < $n; $i++) {
$rowSum = 0;
$colSum = 0;
for ($j = 0; $j < $n; $j++) {
$rowSum += $matrix[$i][$j];
$colSum += $matrix[$j][$i];
}
if ($rowSum != $sumDiagonal1 || $colSum != $sumDiagonal1) {
return false;
}
}
return true;
}
$matrix = [
[8, 1, 6],
[3, 5, 7],
[4, 9, 2]
];
if (isMagicMatrix($matrix, 3)) {
echo "The given matrix is a Magic Matrix.\n";
} else {
echo "The given matrix is NOT a Magic Matrix.\n";
}
?>
public class MagicMatrix {
public static boolean isMagicMatrix(int[][] matrix, int n) {
int sumDiagonal1 = 0, sumDiagonal2 = 0;
// Sum of the diagonals
for (int i = 0; i < n; i++) {
sumDiagonal1 += matrix[i][i];
sumDiagonal2 += matrix[i][n - 1 - i];
}
// Check if diagonals are not equal
if (sumDiagonal1 != sumDiagonal2)
return false;
// Check each row and column
for (int i = 0; i < n; i++) {
int rowSum = 0, colSum = 0;
for (int j = 0; j < n; j++) {
rowSum += matrix[i][j];
colSum += matrix[j][i];
}
if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
return false;
}
return true;
}
public static void main(String[] args) {
int[][] matrix = {
{8, 1, 6},
{3, 5, 7},
{4, 9, 2}
};
if (isMagicMatrix(matrix, 3))
System.out.println("The given matrix is a Magic Matrix.");
else
System.out.println("The given matrix is NOT a Magic Matrix.");
}
}
function isMagicMatrix(matrix) {
const n = matrix.length;
let sumDiagonal1 = 0,
sumDiagonal2 = 0;
// Sum of the diagonals
for (let i = 0; i < n; i++) {
sumDiagonal1 += matrix[i][i];
sumDiagonal2 += matrix[i][n - 1 - i];
}
// Check if diagonals are not equal
if (sumDiagonal1 !== sumDiagonal2) return false;
// Check each row and column
for (let i = 0; i < n; i++) {
let rowSum = 0,
colSum = 0;
for (let j = 0; j < n; j++) {
rowSum += matrix[i][j];
colSum += matrix[j][i];
}
if (rowSum !== sumDiagonal1 || colSum !== sumDiagonal1) return false;
}
return true;
}
const matrix = [
[8, 1, 6],
[3, 5, 7],
[4, 9, 2]
];
console.log(
isMagicMatrix(matrix)
? "The given matrix is a Magic Matrix."
: "The given matrix is NOT a Magic Matrix."
);
using System;
class MagicMatrixChecker
{
static bool IsMagicMatrix(int[,] matrix, int n)
{
int sumDiagonal1 = 0, sumDiagonal2 = 0;
// Calculate the sums of both diagonals
for (int i = 0; i < n; i++)
{
sumDiagonal1 += matrix[i, i];
sumDiagonal2 += matrix[i, n - 1 - i];
}
// Check if the sums of diagonals are different
if (sumDiagonal1 != sumDiagonal2)
return false;
// Check the sum of each row and column
for (int i = 0; i < n; i++)
{
int rowSum = 0, colSum = 0;
for (int j = 0; j < n; j++)
{
rowSum += matrix[i, j];
colSum += matrix[j, i];
}
// Check if row or column sum differs from diagonal sum
if (rowSum != sumDiagonal1 || colSum != sumDiagonal1)
return false;
}
return true;
}
static void Main()
{
// Example of a 3x3 matrix
int[,] matrix = {
{ 8, 1, 6 },
{ 3, 5, 7 },
{ 4, 9, 2 }
};
// Check if the matrix is a magic matrix
if (IsMagicMatrix(matrix, 3))
Console.WriteLine("The given matrix is a Magic Matrix.");
else
Console.WriteLine("The given matrix is NOT a Magic Matrix.");
}
}