연재 완료/C Lang 예제코드 모음

C언어 연습문제풀이 CH6 (21. 달팽이 배열 문제)

라이피 (Lypi) 2018. 5. 14. 13:53
반응형

21. 다음과 같이 배열에 저장하는 프로그램을 작성하라.


#include <stdio.h>

int main(void)
{
	//변수 선언부
	const int R = 7, C = 7;
	int ssarray[R][C] = { 0, }; //전부 0으로 초기화
	int row = 0, column = 0;
	int row_Uend = 1, row_Dend = R - 1, column_Lend = 0, column_Rend = C - 1;
	char direction = 'R';

	//배열 초기화
 	for (int n = 1; n < (R * C) + 1; n++) {
		switch (direction) {
		case 'R' :

			ssarray[row][column] = n;

			if (column == column_Rend) {
				column_Rend--;
				row++;
				direction = 'D';
				break;
			}

			if (column != column_Rend) {
				column++;
			}
		
			break;

		case 'D' :

			ssarray[row][column] = n;

			if (row == row_Dend) {
				row_Dend--;
				column--;
				direction = 'L';
				break;
			}


			if (row != row_Dend) {
				row++;
			}

			break;

		case 'L' :

			ssarray[row][column] = n;

			if (column == column_Lend) {
				column_Lend++;
				row--;
				direction = 'U';
				break;
			}

			
			if (column != column_Lend) {
				column--;

			}
		
			break;

		case 'U' :

			ssarray[row][column] = n;

			if (row == row_Uend) {
				row_Uend++;
				column++;
				direction = 'R';
				break;
			}


			if (row != row_Uend) {
				row--;
			}

			break;
		}
	}

	
	//배열 출력
	printf("\n");	printf("\n");	printf("\n");	printf("\n");

	for (int i = 0; i < R; i++) {
		printf("\t");
		for (int k = 0; k < C; k++) {
			printf("%2d ", ssarray[i][k]);
		}
		printf("\n"); printf("\n");
	}

	printf("\n");	printf("\n");	printf("\n");	printf("\n");
}

//위 아래 개행문자들은 그냥 출력을 위한 것이니 신경쓰지 말 것.

반응형