여기다 올리는게 맞는지 모르겠지만... 지푸라기라도 잡는 심정으로 ..올려봅니다 ~
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;
}
index만 좀 가지고 놀면 될꺼 같은데..