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."); } }