C언어 달팽이 질문쫌 드려요 ㅠㅠ 급해요...

C언어 달팽이 질문쫌 드려요 ㅠㅠ 급해요...

작성일 2009.07.19댓글 1건
    게시물 수정 , 삭제는 로그인 필요

C언어 달팽이짜는데 입력받은 수만큼 출력을해야해요

ex

4입력하면     이런식이고 5는 5*5로 되도록... 자기가 입력한 수만큼 출력을해야되요.....

 

 1   2    3    4

12 13  14   5

11 16  15   6

10  9    8   7

 

 

이틀동안 아무리 생각해봤는데 떠오르질 않아요 다른 지식인봐도 어렵고요,,, 쫌 쉽고 간단하게 설명쫌 해주세요 ㅜㅠㅜ


#c언어 달팽이 배열 #c언어 달팽이 배열 회전 #c언어 달팽이 사각형 #c언어 달팽이 배열 n m

profile_image 익명 작성일 -

어느분이 질문해 주셔서

제 답변을 그대로 복사해서 올려요.

 

 

 

행렬에 대해서 알고 계시죠?

달팽이배열은 제일 먼저 열부분으로 증가합니다.(-> 을 의미하는 겁니다)

 

그리고 다시 행부분으로 증가합니다(아래 방향을 의미합니다.)

행부분이 변하는 곳에서는 한 번씩 계산 횟수를 줄여야 합니다.

 

잘 생각해보면 압니다. 

                시작포인트 1 2 3 4  //열부분은 4번 변합니다.

------------------------5 행부분은 3번 변해야 하지요

------------------------6

------------------------7

 

이렇게 한번씩 열과 행으로 증가하고 나면 다시 반대방향으로 갑니다.

열이 감소하고 그 다음 행이 감소하지요. 아래 코딩에서 inc*=-1 이 부분입니다.

열과 행이 감소하고 나면 다시 증가하지요.(inc는 증가량을 의미합니다.)

 

 

기본적으로 이런 알고리즘이고

자세한 코딩은 밑에 짜놨습니다.

 

제말에 조금 힌트를 얻고 짜보시면 될 겁니다.

 

안되면 밑에 코딩을 살짝 참고해 보시고요

 

 

 

 

 

 

 

 

밑에는 제가 짠 코드입니다. 다행히 얼마전에 c복습하면서 짜둔것이 있네여

 

#include "stdafx.h"
#include "stdlib.h"

void snail(int **list,int n);

void main()
{
    int **list,i,n,j; //포인터와 일반변수를 같이 선언하는 것은 지양해야하지만 여기서는 그냥
 scanf("%d",&n);
    list =(int**)malloc(n*sizeof(int*));
for(i=0;i<n;i++) //2차원 배열 메모리의 할당.
 list[i] =(int*)malloc(n*sizeof(int));
 snail(list,n);      //list를 달팽이 배열을 만드는 함수의 출력;
 for(i=0;i<n;i++){             //출력문
  for(j=0;j<n;j++)
   printf("%2d ",list[i][j]);
  printf("\n");

 }
}
void snail(int **list,int n){
 int count,i=0,j=-1,inc=1,num=1; //i는 행을 j는 열을. inc는 i나 j값이 증가하는지
//감소하는지를 결정한다. num은 배열에 삽입될 숫자
 int max=n*n+1;// max는 num이 최대값에 도달했을때 while문을 멈추기위한
 
   
 while(1){
  for(count=0;count<n;count++){// 열이 변하는 구문
   j+=inc;  //j값을 1씩 증가하거나 감소한다. 처음에는 증가시킨다.
   list[i][j]=num++; // num을 대입.   
  }
  if(max==num) break; //달팽이 배열이 완성되면 while문을 멈추게 한다.
  n--;              //행이 변하는 구문부터는 1번 덜 실행된다.
  for(count=0;count<n;count++){//행이 변하는 구문
   i+=inc;
   list[i][j]=num++;
  }
  inc*=-1;   //열과 행을 증가시키고 나면 그 다음부터 감소가 된다. 감소가 되면 다시 증가가 됨
 }
  

}

이번주로또당첨번호 당첨 가능성 큰 곳...

... 운중로또번호 로또593 정림동로또번호 급 해요~ 꿈 로또... 로또당첨되고싶다ㅠㅠㅠㅠㅠㅠ 로또 하는방법 좀 알려주세요 ;; 한성대입구로또 로또 구매 질문 우보로또번호...

고1 문제집추천좀ㅠㅠ급해여ㅠ

... 오래걸려여ㅠㅠ 국어랑 과학이랑 사회추천부탁드려여!... 사는게좋을까여?ㅠㅠ 급해여!!!!!!!!!!!! 성의껏 해주시면... 진짜 좋은 방법이 Why질문이에요. 저는 스코에서 배운...

토익스피킹에 관한 질문입니다.

... ㅠㅠ 앗싸리 맨첨부텀 꽈선배형 말대로 걍 2달짜리... 위 질문에 대해 약간의 조언을 남겨드리겠습니다.... 문화관, 언어교육원 고사장에서 친 셤에서 그놈이 190점...

토익과 토익스피킹

... 이런류의 사회적인 묵직한 이슈 같은 질문을 받고보면... 인강 접속 거의 No,,;;;ㅠㅠ 그래서 결국은 토익스피킹... 추천해드려요. 외국어 능력을 테스트하는 다른 시험을...

토익과 토익스피킹

... 인강 접속 거의 No,,;;;ㅠㅠ 그래서 결국은 학원 수강증... 위 질문에 대해 약간의 조언을 남겨드리겠습니다.... 문화관, 언어교육원 고사장에서 친 셤에서 그놈이 190점...

(토익스피킹) 강남 어학원, 강사...

... ㅠㅠ 앗싸리 맨첨부텀 꽈선배형 말대로 걍 2달짜리... 위 질문에 대해 약간의 조언을 남겨드리겠습니다.... 문화관, 언어교육원 고사장에서 친 셤에서 그놈이 190점...

토익스피킹 배울려고 합니다만..

... ㅠㅠ 앗싸리 맨첨부텀 꽈선배형 말대로 걍 2달짜리... 위 질문에 대해 약간의 조언을 남겨드리겠습니다.... 문화관, 언어교육원 고사장에서 친 셤에서 그놈이 190점...

토익스피킹 학원다니려는데..

... ㅠㅠ 앗싸리 맨첨부텀 꽈선배형 말대로 걍 2달짜리... 위 질문에 대해 약간의 조언을 남겨드리겠습니다.... 문화관, 언어교육원 고사장에서 친 셤에서 그놈이 190점...