|
지금 코드는 가운데 맨 윗줄에 1이 나오고 그 왼쪾 맨 아래에 2가 나오고 대각선으로 쭉 이어지는데
위에 사진 처럼 좀 바꿔주세요 ~ 가운데 세로 제일 오른쪽에 1이 나오고 그 아래 제일 왼쪽에 2가 나오고 대각선으로 이어지는 식으로요~ 감사합니다~
그리고 지금 코드는 세로 줄을 더한값이 다 똑같은데 가로줄이 다 똑같게 바꿔주세요~
사진 첨부했습니다
#include <iostream>
using namespace std;
int arr[30][30];
void Init (int);
void magic_Square(int);
int main()
{
int r;
while(1)
{
cout << "홀수인 값만 입력 하세요.? ";
cin >> r;
while (r%2 == 0 || r<=0)
{cout << "홀수인 값만 입력 하세요.? ";
cin >> r;}
magic_Square(r);
}
return 0;
}
void Init(int cnt)
{
for(int i=0;i<cnt;i++) {
for(int j=0;j<cnt;j++)
arr[i][j] = 0;
}
}
void magic_Square(int cnt)
{
Init(cnt);
int pi = 0 , pj = cnt/2;
int ti , tj;
arr[pi][pj] = 1;
for(int k=2;k<=cnt*cnt;k++)
{
if(pi==0) ti=cnt-1;
else ti = pi-1;
if(pj==0) tj=cnt-1;
else tj = pj-1;
if(arr[ti][tj]==0)
{
pi = ti , pj = tj;
arr[pi][pj] = k;
}
else
{
pi = pi + 1;
arr[pi][pj] = k;
}
}
for(int i=0;i<cnt;i++)
{
for(int j=0;j<cnt;j++)
{
cout << arr[i][j] << "\t";
}
cout << endl;
}
cout << endl;
}
|