문제 정의
런타임 컴파일 방식(실행 시점에 사용자로부터 값을 입력받는 방식)을 활용하여 배열의 모든 요소에 대한 합(sum)과 곱(product)을 계산하는 프로그램을 작성합니다.
해결 방법
2차원 배열은 표 형태의 데이터를 저장해야 하거나 행렬(matrix) 연산을 수행해야 하는 상황에서 주로 사용됩니다.
2차원 배열을 선언하는 문법은 다음과 같습니다.
데이터형 배열이름 [행 크기] [열 크기];
예를 들어, 다음과 같이 선언할 수 있습니다.
int a[5][5];
이 경우 배열에 포함된 전체 요소의 개수는 다음과 같이 계산됩니다.
요소 개수 = 행 크기 × 열 크기 = 5 × 5 = 25개
예제 코드
다음은 런타임에 사용자 입력을 받아 두 배열 A와 B의 각 요소별 합과 곱을 계산하고 출력하는 C 프로그램입니다.
#include<stdio.h>
void main(){
//배열 선언 - 런타임//
int A[2][3],B[2][3],i,j,sum[i][j],product[i][j];
//for 반복문을 이용해 배열 A와 B에 값 입력//
printf("Enter elements into the array A: \n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("A[%d][%d] :",i,j);
scanf("%d",&A[i][j]);
}
printf("\n");
}
for(i=0;i<2;i++){
for(j=0;j<3;j++){
printf("B[%d][%d] :",i,j);
scanf("%d",&B[i][j]);
}
printf("\n");
}
//합 계산 후 출력//
printf("Sum array is : \n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
sum[i][j]=A[i][j]+B[i][j];
printf("%d\t",sum[i][j]);
}
printf("\n");
}
//곱 계산 후 출력//
printf("Product array is : \n");
for(i=0;i<2;i++){
for(j=0;j<3;j++){
product[i][j]=A[i][j]*B[i][j];
printf("%d\t",product[i][j]);
}
printf("\n");
}
}
코드 설명
이 프로그램의 동작 흐름은 다음과 같습니다.
- 배열 선언: 2×3 크기의 2차원 배열 A, B와 결과를 저장할 sum, product 배열을 선언합니다.
- 입력 단계: 중첩 for 반복문을 사용하여 배열 A와 B의 각 위치(행, 열)에 해당하는 값을 사용자로부터 입력받습니다.
- 합 계산: 두 배열의 같은 위치에 있는 요소끼리 더한 결과를 sum 배열에 저장하고 출력합니다.
- 곱 계산: 두 배열의 같은 위치에 있는 요소끼리 곱한 결과를 product 배열에 저장하고 출력합니다.
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter elements into the array A: A[0][0] :12 A[0][1] :23 A[0][2] :03 A[1][0] :25 A[1][1] :34 A[1][2] :01 B[0][0] :03 B[0][1] :46 B[0][2] :23 B[1][0] :01 B[1][1] :24 B[1][2] :32 Sum array is: 15 69 26 26 58 33 Product array is: 36 1058 69 25 816 32