본문 바로가기

대학교 1-2/컴프

HW5a_2

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

'대학교 1-2 > 컴프' 카테고리의 다른 글

HW지뢰찾기  (0) 2023.10.09
HW5a  (0) 2023.10.09
LAB5a_2  (0) 2023.10.04
LAB5a  (0) 2023.10.04
project 1  (0) 2023.10.03