규칙성을 갖는 숫자판 만들기

2024. 11. 5. 16:05공학설계프로그래밍

<문제 설명>

 

1) main 함수의 인수로 정수 값을 받는다

2) 인수 A의 값에 따라 아래와 같은 규칠을 갖는 AxA 숫자판을 생성한다.

한국외국어대학교 공학설계프로그래밍 자료

 

 

<문제 해설>

 

A=4일 때로 예시를 들어서 설명하자면, 숫자판을 생성하는데 필요한 동작은 총 4가지이다.

첫 번째로 왼쪽에서 오른쪽으로 가면서 숫자를 채우는 동작, 두 번째로 위에서 아래로 가면서 숫자를 채우는 동작, 세 번째로 오른쪽에서 왼쪽으로 가면서 숫자를 채우는 동작, 네 번째로 아래에서 위로 가면서 숫자를 채우는 동작이 있다.

 

각각의 동작을 mode 0 ~ 3으로 지정한 후 프로그래밍을 한다.

 

 

End 변수는 A*A로 값이 끝까지 채워졌는지 확인을 위해 지정한 변수이다.

min_x,min_y,max_x,max_y는 값을 채울 때 x축과 y축이 가질 수 있는 최소값과 최대값을 의미한다.

x와 y는 y축과 x축을 의미하며, mode는 처음에 왼쪽에서 오른쪽으로 값을 채워나가야하기 때문에 0으로 설정한다.

a와b는 좌표를 이동할 때 사용되는 변수이며, (y,x) = (y+b,x+a)로 다음 좌표로 이동할 때 y는 b씩 x는 a씩 이동한다.

num은 배열안에 채워나가는 값이며 A가 4일 경우 0~15까지의 값을 가지게 된다.

 

mode 0일 경우

 

mode 1로 넘어갈 때 x축은 고정이고 y축만 1씩 늘어나야하므로 a는 0 b는 1로 바꿔준다.

 

mode 1일 경우

 

 

 

mode 2일 경우

 

 

 

mode 3일 경우

 

 

 

mode 3이 끝날 때 다시 mode 0부터 시작해야하므로 mode를 0으로 설정해준다.

 

mode 0 ~ 3 동작을 배열에 모든 값이 채워져 나갈 때 까지 반복해야하므로 while문을 사용하여 반복해준다. 이 때 사용하는 것이 End 변수이다.

 

값이 채워져 나가는 num이라는 변수가 끝을 의미하는 End에 도달할 때 까지 mode 0 , 1 , 2 , 3 을 반복해준다.

 

 

결과는 위와 같이 나온다.