문제 정의
이 글에서는 실행 시간에 사용자가 직접 입력한 두 개의 복소수를 C 프로그램으로 더하는 방법을 알아보겠습니다.
복소수란 무엇인가?
복소수(complex number)는 실수부(real part)와 허수부(imaginary part)로 구성된 수입니다.
복소수는 일반적으로 a + ib 형태로 표현합니다. 여기서 a는 실수부, b는 허수부를 나타내며, i는 제곱하면 -1이 되는 허수 단위입니다.
두 복소수의 덧셈은 매우 간단합니다. 실수부끼리 더하고 허수부끼리 더하면 됩니다.
(a + ib) + (c + id) = (a + c) + i(b + d)
프로그램 예시
예를 들어 두 복소수 (4 + 2i)와 (5 + 3i)를 더한다고 가정해 보겠습니다. 실수부는 4 + 5 = 9, 허수부는 2 + 3 = 5이므로 최종 결과는 9 + 5i가 됩니다.
아래 코드에서는 구조체(struct)를 사용해 복소수의 실수부와 허수부를 하나의 단위로 관리하고, 사용자로부터 두 복소수를 입력받아 덧셈을 수행한 뒤 그 결과를 출력합니다.
#include <stdio.h>
struct complexNumber{
int realnumber, imaginarynumber;
};
int main(){
struct complexNumber x, y, z;
printf("첫 번째 복소수의 실수부와 허수부를 입력하세요\n");
scanf("%d%d", &x.realnumber, &x.imaginarynumber);
printf("두 번째 복소수의 실수부와 허수부를 입력하세요\n");
scanf("%d%d", &y.realnumber, &y.imaginarynumber);
z.realnumber = x.realnumber + y.realnumber;
z.imaginarynumber = x.imaginarynumber + y.imaginarynumber;
printf("복소수의 합: (%d) + (%di)\n", z.realnumber, z.imaginarynumber);
return 0;
}
실행 결과
첫 번째 복소수의 실수부와 허수부를 입력하세요
4 2
두 번째 복소수의 실수부와 허수부를 입력하세요
5 3
복소수의 합: (9) + (5i)
코드 설명
1. 구조체 정의: complexNumber 구조체는 복소수의 실수부(realnumber)와 허수부(imaginarynumber)를 int형 멤버 변수로 가집니다.
2. 입력 받기: scanf 함수를 통해 첫 번째 복소수(x)와 두 번째 복소수(y)의 실수부와 허수부를 각각 입력받습니다.
3. 덧셈 연산: 세 번째 변수 z에 두 복소수의 실수부끼리의 합과 허수부끼리의 합을 저장합니다.
4. 결과 출력: printf 함수를 이용해 (실수부) + (허수부 i) 형식으로 최종 결과를 화면에 출력합니다.
이처럼 구조체를 활용하면 복소수처럼 서로 연관된 데이터를 깔끔하게 묶어 다룰 수 있으며, 코드의 가독성과 유지보수성도 함께 향상됩니다.