JUST GO

[C] TEST-10 본문

C/TEST

[C] TEST-10

root_go 2022. 10. 6. 09:09

(C/C++프로그래밍 과제_10) - 2차원 배열포인터를 활용한 배열의 회전

-길이가 4x4인 int형 2차원 배열을 선언하고, 모든 요소를 아래 실행결과와 같이 출력될 수 있도록 프로그래밍 한다.

첫번째 출력을 기준으로, 나머지 배열의 출력값이 90` 오른쪽으로 회전하여 출력된다.

#include<iostream>
void rotate(int(*data)[4]) 
{	
	int newdata[4][4];     // 새로운 배열 선언
	int(*p)[4] = &data[0]; // 새로운 배열에 입력받은 배열값을 복사

	for (int i = 0; i < 4; i++)
		for (int j = 0; j < 4; j++)
			newdata[i][j] = data[i][j];

	for (int i = 0; i < 4; i++)
		for (int j = 0; j < 4; j++)
			data[i][j] = newdata[3-j][i]; // 입력받은 배열(i, j) = 새로운 배열(3-j, i)
}
// 이동하기 전 열과 이동한 후 행이 같다
// 이동하기 전 행과 이동한 후 열의 합이 3이다
void printarr(int(*data)[4]) // 배열 출력해주는 함수
{
	for (int i = 0; i < 4; i++) { 
		for (int j = 0; j < 4; j++)
			printf("%2d ", data[i][j]);
		printf("\n");
	}
}

int main(void) {
	int i, j;
	int data[4][4] = {
		{1,2,3,4},
		{5,6,7,8},
		{9,10,11,12},
		{13,14,15,16}
	};

	for (i = 0; i < 3; i++) { // 90도 회전 3번 반복
		printarr(data);
		rotate(data);
		printf("\n");
	}
	printarr(data); // 270도 회전된 상태에서 출력
	printf("\n");

	printf("배열 저장된 값 출력 확인\n");
	printf("\n");
	for (i = 0; i < 4; i++) { // 270도 회전된 상태에서 출력
		for (j = 0; j < 4; j++)
			printf("%2d ", data[i][j]);
		printf("\n");
	}

	return 0;
}

'C > TEST' 카테고리의 다른 글

[C] TEST-9  (0) 2022.10.06
[C] TEST-5  (0) 2022.10.06
[C] TEST-4  (0) 2022.10.06
[C] TEST-3  (0) 2022.10.06
[C] TEST-2  (0) 2022.10.06