여기다 올리는게 맞는지 모르겠지만... 지푸라기라도 잡는 심정으로 ..올려봅니다 ~



 22   21  13   5  46  38  30

 31   23  15  14   6  47  39
 40   32  24  16   8    7  48
 49   41  33  25  17   9    1
   2   43  42  34  26  18  10
 11     3  44  36  35  27  19
 20   12    4  45  37  29   28

 

지금 코드는 가운데 맨 윗줄에 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;
}