Check Whether Given Matrix is Magic Square or Not
//Coming Soon
Output:
#include<stdio.h> #include<stdlib.h> int main() { int i,j,rows,col,diagonal_1=0,diagonal_2=0,m,n,k=0,sum_rows=0,sum_col=0,flag=0; printf("Enter number of rows\n"); scanf("%d",&rows); col=rows; int a[rows][col]; if(rows%2!=0) { m=0; n=rows-1; //Taking input for Magic Square printf("Enter Magic Square Numbers Horizontally\n"); //If 8 1 6 // 3 5 7 // 4 9 2 //Then Enter from 8 to 6 and then 3 to 7 and then 4 to 9 for(i=0;i<rows;i++) { for(j=0;j<col;j++) { scanf("%d",&a[i][j]); } } printf("The given Matrix is\n"); for(i=0;i<rows;i++) { for(j=0;j<col;j++) { printf("%d\t",a[i][j]); } printf("\n"); } //Finding Sum for 2 Diagonals for(i=0;i<rows;i++) { diagonal_1+=a[i][i]; diagonal_2+=a[m][n]; m++; n--; } printf("Sum of diagonal 1 is %d\n",diagonal_1); printf("Sum of diagonal 2 is %d\n",diagonal_2); if(diagonal_2==diagonal_1) { flag=1; } else { flag=0; printf("Diagonals Sum are not Equal so Not A MagicSquare\n"); exit(0); } //Finding Sum of Rows for(i=0;i<rows;i++) { sum_rows=0; for(j=0;j<col;j++) { sum_rows+=a[i][j]; } printf("Sum of %d Row is %d\n",k,sum_rows); k++; if(diagonal_1==sum_rows) { flag=1; } else { flag=0; printf("Sum of Rows and Diagonals are not Equal,so Not A MagicSquare\n"); exit(0); } } //Finding sum of Columns k=0; for(i=0;i<col;i++) { sum_col=0; for(j=0;j<rows;j++) { sum_col+=a[j][i]; } printf("Sum of %d Column is %d\n",k,sum_col); k++; if(diagonal_1==sum_col) { flag=1; } else { flag=0; printf("Even Though Diagonals and Rows Sum are Equal but Sum of Columns are not Equal,so Not A MagicSquare\n"); exit(0); } } if(flag==1) printf("Given Matrix is Magic Square\n"); } else { printf("Not Possible as rows has to be Odd\n"); } return(0); }Explanation:
//Coming Soon
Output: