배열(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이 아닌지 검사하는 예외 처리를 추가하는 것이 좋습니다. 또한 배열 크기는 입력될 행과 열의 최대 크기를 고려하여 충분히 선언해야 메모리 오버플로우를 방지할 수 있습니다.