#include <stdio.h>
#define N 15
void magic(int [N][N],int);
void main()
{
int table[N][N],n,i,j,sum;
char control;
while(1)
{
do
{
printf(\"?\\n\");
scanf(\"%d\",&n);
fflush(stdin);
if(n%2 == 0)
{
printf(\"Enter the erroe\\n\"); // 짝수 입력시 에러 출력 후 종료
return;
}
}while(n & 2 == 0 || n<3 || n>21);
magic(table,n);
printf(\"\\n\\n\\t[%d * %d magic square]\\n\\n\\t\",n,n);
for(i = 1 ; i <= n ; i++)
{
for(j = 1 ; j <= n ; j++)
printf(\"%5d\", table[i][j]);
printf(\"\\n\\t\");
}
printf(\"\\n[Checking magic square]\\n\\n\");
for(i=1;i<=n;i++)
{
sum=0;
printf(\"%d row: \",i); //row
for(j=1;j<n;j++)
{
printf(\"%d +\",table[i][j]);
sum += table[i][j];
}
printf(\"%d = %d\\n\",table[i][j],sum);
}
for(i=1;i<=n;i++)
{
sum=0;
printf(\"%d col: \",i); //col
for(j=1;j<n;j++)
{
printf(\"%d +\",table[j][i]);
sum += table[j][i];
}
printf(\"%d = %d\\n\",table[j][i],sum);
}
printf(\"continue y or n : \");
scanf(\"%c\", &control);
if(control == \'y\')
continue;
else if(control == \'n\')
break;
else // y or n가 아니면 다시 선택
printf(\"잘못 선택 했습니다\\n\");
for(i=1;j<=n;j++)
if(control == \'y\') // y일때 다시 시작
continue;
else if(control == \'n\') // n이면 종료
break;
}
}
void magic(int array[N][N],int n){
int i,j,row,column;
for(i = 1 ; i <= n ; i++)
for(j = 1 ; j <= n ; j++)
array[i][j]=0;
row=1;
column=n/2+1;
for(i = 1 ; i <= n * n ; i++)
{
array[row][column]=i;
if(row==1)
if (column==n) row++;
else{
row=n;
column++;
}
else if(column==n)
{
row--;
column=1;
}
else{
row--;
column++;
if(array[row][column] !=0)
{
row+=2;
column--;
}
}
}
}
여기서 실행시키면
마방진 검산에서 대각선 Ldiag,Rdiag 추가해야하는데
어떻게 해야할지 감이 안잡혀요 ㅠㅠ 도와주세용
시러 임마..
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
양쪽 인자가 같으면 대각선. [0][0] [1][1] [2][2] // [2][2] [1][1] [0][0]