헷갈리는건 그냥 장난삼아...ㅋㅋ
for 를 사용한겁니다.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
#define n 9//갯수
#define k(x,y) {a[y][x]=t++;Canvas->TextOut(x*20,y*20,AnsiString(a[y][x]));}
#define f(a) for(a=i;a<n-1-i;a++)k(x,y);
#define e(a) for(a=n-1-i;a>i;a--)k(x,y);
int a[n][n];int x=0,y=0,i=0,t=0;
for(;i<n/2;i++){x=y=i;f(x)f(y)e(x)e(y)}if(n%2)k(n/2,n/2)
}
위에꺼 디파인 풀어 논거입니다.^^
void __fastcall TForm1::Button1Click(TObject *Sender)
{
#define n 9//갯수
int a[n][n];
int x=0,y=0,i,t=0;
for(i=0;i<n/2;i++){
x=y=i;
for(x=i;x<n-1-i;x++){
a[y][x]=t++;
Canvas->TextOut(x*30,y*30,AnsiString(a[y][x]));
}
for(y=i;y<n-1-i;y++){
a[y][x]=t++;
Canvas->TextOut(x*30,y*30,AnsiString(a[y][x]));
}
for(x=n-1-i;x>i;x--){
a[y][x]=t++;
Canvas->TextOut(x*30,y*30,AnsiString(a[y][x]));
}
for(y=n-1-i;y>i;y--){
a[y][x]=t++;
Canvas->TextOut(x*30,y*30,AnsiString(a[y][x]));
}
}
if(n%2){
a[n/2][n/2]=t++;
Canvas->TextOut(n/2*30,n/2*30,AnsiString(a[n/2][n/2]));
}
}
|
이거 제데로 분석도 안되네여 ㅎㅎ;;