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

구조체를 함수에 전달하여 복소수를 더하는 C++ 프로그램

복소수란 무엇인가?

복소수는 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";

마무리

이 프로그램은 구조체를 활용해 복소수라는 하나의 개념을 실수부와 허수부로 깔끔하게 묶어 관리하고, 함수에 구조체를 값으로 전달하여 연산을 수행하는 전형적인 패턴을 보여줍니다. 구조체와 함수를 함께 사용하면 관련 데이터를 하나의 단위로 다룰 수 있어 코드의 가독성과 유지보수성이 크게 향상됩니다.