블로그 이미지
랜달프

calendar

1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

Notice

    2007. 12. 3. 22:50 Programming/C programming

    #include<stdio.h>

    void main(void){
     int ar[100][100];
     int x1 =0 , x2, y1 =0, y2 ; //벽
     int vx=1,vy=0; //백터
     int x=-1,y=0;    //배열에 들어갈 현재 값.
     int n ;  // 배열의 크기
     int i,j,su=0;
     scanf("%d",&n);
     //n=5;

     y2 = n-1;
     x2 = n-1;

     for(i=0;i<n;i++){
      for(j=0;j<n;j++)ar[i][j]=0;
     }

     printf("  su  x   y  vx  vy  x1  x2  y1  y2 \n");
     
     while(su<n*n){   ///n*n){
      x+=vx;
      y+=vy;
      ar[y][x] = ++su;
      printf("%3d %3d %3d %3d %3d %3d %3d %3d %3d  \n",su,x,y,vx,vy,x1,x2,y1,y2);
      if(x==x2 && vy==0 && vx==1  ){ //하로  (우일때)
      //printf("하\n");
      vx=0;
      vy=1;
      y1+=1; //윗벽을 없앰.
      }
      if(y==y2 && vy==1 && vx==0 ){//좌로 (후일때)
       //printf("좌\n");
       vx=-1;
       vy=0;
       x2-=1; //오른쪽 벽을 없앰.
      }
      if(x==x1 && vy==0 && vx==-1 ){ //위로  (좌일때)
       //printf("상\n");
       vx=0;
       vy=-1;
       y2-=1; //아래벽을 없앰..
      }
      if(y==y1 && vy==-1 && vx==0  ){//우로  (상일때)
       //printf("우\n");
       vx=1;
       vy=0;
       x1+=1; //왼쪽벽을 없앰..
      }
     
     }

     for(i=0;i<n;i++){
      for(j=0;j<n;j++)printf("%3d",ar[i][j]);
      printf("\n");
     }
     
    }

    사용자 삽입 이미지

    출력결과



    posted by 랜달프