복소수란 무엇인가?
복소수는 a+bi 형태로 표현되는 수입니다. 여기서 i는 허수 단위이며, a와 b는 실수입니다. 복소수의 대표적인 예는 다음과 같습니다.
2+5i
3-9i
8+2i
이 글에서는 구조체(structure)를 함수에 전달하여 두 복소수를 더하는 방법을 C++ 프로그램으로 살펴보겠습니다.
전체 예제 코드
#include <iostream>
using namespace std;
typedef struct complexNumber {
float real;
float imag;
};
complexNumber addCN(complexNumber num1, complexNumber num2) {
complexNumber temp;
temp.real = num1.real + num2.real;
temp.imag = num1.imag + num2.imag;
return(temp);
}
int main() {
complexNumber num1, num2, sum;
cout << "Enter real part of Complex Number 1: " << endl;
cin >> num1.real;
cout << "Enter imaginary part of Complex Number 1: " << endl;
cin >> num1.imag;
cout << "Enter real part of Complex Number 2: " << endl;
cin >> num2.real;
cout << "Enter imaginary part of Complex Number 2: " << endl;
cin >> num2.imag;
sum = addCN(num1, num2);
if(sum.imag >= 0)
cout << "Sum of the two complex numbers is "<< sum.real <<" + "<< sum.imag <<"i";
else
cout << "Sum of the two complex numbers is "<< sum.real <<" + ("<< sum.imag <<")i";
return 0;
}
실행 결과
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
Enter real part of Complex Number 1: 5
Enter imaginary part of Complex Number 1: -9
Enter real part of Complex Number 2: 3
Enter imaginary part of Complex Number 2: 6
Sum of the two complex numbers is 8 + (-3)i
코드 상세 설명
1. 복소수 구조체 정의
위 프로그램에서 구조체 complexNumber는 복소수의 실수부(real)와 허수부(imag)를 저장합니다. 구조체 정의는 다음과 같습니다.
struct complexNumber {
float real;
float imag;
};실수부와 허수부 모두 소수점 값을 다룰 수 있도록 float 자료형으로 선언되었습니다.
2. 덧셈을 수행하는 addCN() 함수
addCN() 함수는 complexNumber 타입의 인자 두 개를 받아, 두 복소수의 실수부끼리 그리고 허수부끼리 각각 더한 뒤 그 결과를 반환합니다. 반환된 값은 main() 함수로 전달됩니다.
complexNumber addCN(complexNumber num1, complexNumber num2) {
complexNumber temp;
temp.real = num1.real + num2.real;
temp.imag = num1.imag + num2.imag;
return(temp);
}복소수의 덧셈 규칙상 (a+bi) + (c+di) = (a+c) + (b+d)i 이므로, 실수부는 실수부끼리, 허수부는 허수부끼리 더하면 됩니다.
3. 사용자 입력 처리
main() 함수에서는 사용자로부터 첫 번째와 두 번째 복소수의 실수부 및 허수부 값을 입력받습니다.
cout << "Enter real part of Complex Number 1: " << endl;
cin >> num1.real;
cout << "Enter imaginary part of Complex Number 1: " << endl;
cin >> num1.imag;
cout << "Enter real part of Complex Number 2: " << endl;
cin >> num2.real;
cout << "Enter imaginary part of Complex Number 2: " << endl;
cin >> num2.imag;
4. 결과 계산 및 출력
두 복소수의 합은 addCN() 함수를 호출하여 구하고, 이후 조건문을 통해 허수부의 부호에 따라 알맞은 형식으로 출력합니다. 허수부가 음수일 경우 괄호로 묶어 표시하는 점이 특징입니다.
sum = addCN(num1, num2);
if(sum.imag >= 0)
cout << "Sum of the two complex numbers is "<< sum.real <<" + "<< sum.imag <<"i";
else
cout << "Sum of the two complex numbers is "<< sum.real <<" + ("<< sum.imag <<")i";
마무리
이 프로그램은 구조체를 활용해 복소수라는 하나의 개념을 실수부와 허수부로 깔끔하게 묶어 관리하고, 함수에 구조체를 값으로 전달하여 연산을 수행하는 전형적인 패턴을 보여줍니다. 구조체와 함수를 함께 사용하면 관련 데이터를 하나의 단위로 다룰 수 있어 코드의 가독성과 유지보수성이 크게 향상됩니다.