JUST GO
[C] TEST-10 본문
(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 |