LAB5a_2의 발전 문제이다. 4 x 4 int형 2차원 배열에 아래의 <A> 와 같이 값을 넣어 출력하고 배열의 요소들을 오른쪽 방향으로 90도씩 4번을 이동시키면서 출력하는 프로그램을 작성해보자. 실행예에서 보여지듯이 90도씩 4번 돌리면 원래의 배열로 돌아오게 하라. 위의 LAB에서 작성한 함수를 사용하라.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#include <stdio.h>
void matrixInput(int arr[4][4], int size)
{
int num = 1;
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++) {
arr[i][j] = num;
num++;
}
}
void printMatrix(int arr[4][4], int size)
{
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++)
printf("%5d", arr[i][j]);
printf("\n");
}
printf("\n");
}
void matrixMove(int arr1[4][4], int arr2[4][4], int size)
{
for (int i = 0; i < size; i++)
for (int j = 0, k = size - 1; j < size, k >= 0; j++, k--)
arr2[i][j] = arr1[k][i];
}
int main(void)
{
int A[4][4], B[4][4], C[4][4], D[4][4];
matrixInput(A, 4);
printMatrix(A, 4);
matrixMove(A, B, 4);
printMatrix(B, 4);
matrixMove(B, C, 4);
printMatrix(C, 4);
matrixMove(C, D, 4);
printMatrix(D, 4);
matrixMove(D, A, 4);
printMatrix(A, 4);
return 0;
}
|
cs |
LAB5a_2의 규칙을 그대로 가져다가 쓰면 된다
main 부분을 변경한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include <stdio.h>
void matrixInput(int arr[4][4], int size)
{
int num = 1;
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++) {
arr[i][j] = num;
num++;
}
}
void printMatrix(int arr[4][4], int size)
{
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++)
printf("%5d", arr[i][j]);
printf("\n");
}
printf("\n");
}
void matrixMove(int arr1[4][4], int arr2[4][4], int size)
{
for (int i = 0; i < size; i++)
for (int j = 0, k = size - 1; j < size, k >= 0; j++, k--)
arr2[i][j] = arr1[k][i];
}
void copyTable(int arr2[4][4], int arr1[4][4], int size)
{
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
arr1[i][j] = arr2[i][j];
}
int main(void)
{
int A[4][4], B[4][4];
matrixInput(A, 4);
printMatrix(A, 4);
for (int i = 0; i < 4; i++) {
matrixMove(A, B, 4);
printMatrix(B, 4);
copyTable(B, A, 4);
}
return 0;
}
|
cs |