Pages

Saturday, September 7, 2013

Write a C program to Generate Magic Square

What is magic square?
A magic square is an arrangement of integers in a square in such a way that the sum of each horizontal, vertical, and diagonal row is one constant number, the so-called magic constant.
                                       
An Odd Magic Square

Code to generate Magic Square

-------------------------------------------------------------------------------

# include <stdio.h>  
# include <conio.h>  

void main()  
{  
int n, i, j, c, magic[99][99];  
clrscr() ;  
printf("Enter the size of the magic square(between 1 to 99 ) : ") ;  
scanf("%d", &n) ;

if (n % 2 == 0)  
{  
c = 1;

for(i = 0; i < n; i++)
for(j = 0; j < n; j++, c++)
magic[i][j] = c;

for(i = 0, j = (n-1); i < n/2; i++, j--)
{
c = magic[i][i];
magic[i][i] = magic[j][j];
magic[j][j] = c;
}

for(i = 0, j = (n-1); i < n/2; i++, j--)
{
c = magic[i][j];
magic[i][j] = magic[j][i];
magic[j][i] = c;
}

for (i = 0 ; i < n ; i++)  
{  
for (j = 0 ; j < n ; j++)  
{  
printf("%d\t", magic[i][j]) ;  
printf("\n\n") ;  
}   
 
}
else
{
printf("\nThe magic square for %d x %d is :\n\n", n, n) ;  
j = (n + 1) / 2 - 1 ;
i = 0 ;  
for(c = 1 ; c <= n * n ; c++)  
{  
magic[i][j] = c ;  
if(c % n == 0)  
{  
i = (i + 1);  
}
else
{
if(i == 0)  
i = n-1;  
else  
i = i - 1 ; 
if(j == (n-1))
j = 0;  
else  
j = j + 1 ;  
}
for (i = 0 ; i < n ; i++)  
{  
for (j = 0 ; j < n ; j++)  
{  
printf("%d\t", magic[i][j]) ;  
printf("\n\n") ;  
}  
}  

getch() ;  

}   

-------------------------------------------------------------------------------


No comments:

Post a Comment