Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

두 개의 복소수를 더하기 위해 더하기 연산자를 오버로드하는 C++ 프로그램

<시간/>

실수부와 허수부가 있는 복소수 클래스가 있다고 가정합니다. 두 개의 복소수를 더하려면 더하기(+) 연산자를 오버로드해야 합니다. 또한 적절한 표현으로 복소수를 반환하는 함수를 정의해야 합니다.

따라서 입력이 c1 =8 - 5i, c2 =2 + 3i와 같으면 출력은 10 - 2i가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • + 연산자를 오버로드하고 다른 복소수 c2를 인수로 사용

  • 실수와 이미지가 0인 ret라는 복소수를 정의합니다.

  • ret의 실수 :=자신의 실수 + c2의 실수

  • ret의 이미지 :=자체 이미지 + c2의 이미지

  • 리턴 렛

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

#include <iostream>
#include <sstream>
#include <cmath>
using namespace std;
class Complex {
    private:
        int real, imag;
    public:
    Complex(){
        real = imag = 0;    
    }
    Complex (int r, int i){
        real = r;
        imag = i;
    }
    string to_string(){
        stringstream ss;
        if(imag >= 0)
            ss << "(" << real << " + " << imag << "i)";
        else
            ss << "(" << real << " - " << abs(imag) << "i)";
        return ss.str();
    }
    Complex operator+(Complex c2){
        Complex ret;
        ret.real = real + c2.real;
        ret.imag = imag + c2.imag;
        return ret;
    }
};
int main(){
    Complex c1(8,-5), c2(2,3);
    Complex res = c1 + c2;
    cout << res.to_string();
}

입력

c1(8,-5), c2(2,3)

출력

(10 - 2i)