Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 2차원 배열의 산술 연산 수행 방법 완벽 가이드

배열(Array)은 여러 개의 관련된 데이터 항목들을 하나의 이름으로 묶어 저장할 수 있는 자료구조입니다.

예를 들어 int student[30];처럼 선언하면, 'student'라는 하나의 배열 이름으로 30개의 데이터 항목을 저장하고 관리할 수 있습니다.

배열의 주요 연산

  • 탐색(Searching) − 배열 안에서 특정 요소가 존재하는지 확인하는 연산입니다.

  • 정렬(Sorting) − 배열의 요소들을 오름차순 또는 내림차순으로 정렬하는 연산입니다.

  • 순회(Traversing) − 배열의 모든 요소를 순서대로 하나씩 처리하는 연산입니다.

  • 삽입(Inserting) − 배열에 새로운 요소를 추가하는 연산입니다.

  • 삭제(Deleting) − 배열에서 특정 요소를 제거하는 연산입니다.

2차원 배열 산술 연산의 기본 로직

두 개의 2차원 배열 A와 B에 대해 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산을 수행하려면 중첩 반복문을 사용하여 각 위치의 요소끼리 연산하면 됩니다. 기본적인 로직은 다음과 같습니다.

for(row = 0; row < i; row++){
    for(col = 0; col < j; col++){
        add[row][col] = A[row][col] + B[row][col];
        sub[row][col] = A[row][col] - B[row][col];
        mul[row][col] = A[row][col] * B[row][col];
        div[row][col] = A[row][col] / B[row][col];
        mod[row][col] = A[row][col] % B[row][col];
    }
}

여기서 i는 행(row)의 개수, j는 열(column)의 개수를 의미합니다. 나눗셈 결과는 실수형(float)으로 저장해야 소수점 이하 값까지 정확하게 표현할 수 있습니다.

연산 결과 출력 로직

모든 산술 연산 결과를 표 형태로 깔끔하게 출력하려면 다음과 같은 로직을 사용합니다.

printf("\nAdd\t Sub\t Mul\t Div\t Mod\n");
printf("-------------------------------\n");
for(row = 0; row < i; row++){
    for(col = 0; col < j; col++){
        printf("\n%d \t ", add[row][col]);
        printf("%d \t ", sub[row][col]);
        printf("%d \t ", mul[row][col]);
        printf("%.2f \t ", div[row][col]);
        printf("%d \t ", mod[row][col]);
    }
}

전체 프로그램 코드

다음은 두 개의 2차원 배열에 대해 산술 연산을 수행하는 C 프로그램의 전체 코드입니다.

#include<stdio.h>
int main(){
    int i, j, row, col, A[20][20], B[20][20];
    int add[10][10], sub[10][10], mul[10][10], mod[10][10];
    float div[10][10];
    printf("enter no: of rows and columns:\n");
    scanf("%d %d", &i, &j);
    printf("enter elements of 1st array:\n");
    for(row = 0; row < i; row++){
        for(col = 0; col < j; col++){
            scanf("%d", &A[row][col]);
        }
    }
    printf("enter elements of 2nd array:\n");
    for(row = 0; row < i; row++){
        for(col = 0; col < j; col++){
            scanf("%d", &B[row][col]);
        }
    }
    for(row = 0; row < i; row++){
        for(col = 0; col < j; col++){
            add[row][col] = A[row][col] + B[row][col];
            sub[row][col] = A[row][col] - B[row][col];
            mul[row][col] = A[row][col] * B[row][col];
            div[row][col] = A[row][col] / B[row][col];
            mod[row][col] = A[row][col] % B[row][col];
        }
    }
    printf("\nAdd\t Sub\t Mul\t Div\t Mod\n");
    printf("-------------------------------\n");
    for(row = 0; row < i; row++){
        for(col = 0; col < j; col++){
            printf("\n%d \t ", add[row][col]);
            printf("%d \t ", sub[row][col]);
            printf("%d \t ", mul[row][col]);
            printf("%.2f \t ", div[row][col]);
            printf("%d \t ", mod[row][col]);
        }
    }
    return 0;
}

실행 결과

위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다. 사용자가 행과 열의 크기를 입력한 뒤, 두 배열의 요소를 차례대로 입력하면 각 위치별로 계산된 덧셈(Add), 뺄셈(Sub), 곱셈(Mul), 나눗셈(Div), 나머지(Mod) 결과가 표 형태로 표시됩니다.

enter no: of rows and columns:
3 4
enter elements of 1st array:
1 2 4 5 6 7 3 8 3 2 1 8
enter elements of 2nd array:
1 2 1 2 1 3 4 2 1 2 1 1
Add   Sub  Mul  Div  Mod
-------------------------------
2     0    1   1.00  0
4     0    4   1.00  0
5     3    4   4.00  0
7     3    10  2.00  1
7     5    6   6.00  0
10    4    21  2.00   1
7    -1   12  0.00   3
10    6   16   4.00  0
4    2    3    3.00  0
4    0    4    1.00   0
2    0    1    1.00   0
9    7    8    8.00   0

주의 사항

나눗셈 연산 시 두 번째 배열의 요소 값이 0이면 0으로 나누기 오류(division by zero)가 발생할 수 있으므로, 실제 프로젝트에서는 반드시 분모가 0이 아닌지 검사하는 예외 처리를 추가하는 것이 좋습니다. 또한 배열 크기는 입력될 행과 열의 최대 크기를 고려하여 충분히 선언해야 메모리 오버플로우를 방지할 수 있습니다.