求求大家这个题怎么做

使用C++语言构造"复数"类,实现两个复数之间的加减法。

请定义一个MyComplex类,包含实部、虚部等成员变量,并定义myAdd()、myMinus()成员函数来进行计算,定义成员函数showAnswer()输出结果。


注意:输出中当实部或虚部为0时,仅输出非0部分;实部虚部均为0时,输出0。数据保证复数的实部虚部都在int范围内。

多组输入。

每组两行数据,每行第一个数为实部,第二个数为虚部,例如:

a b

x y

分别代表a+bi和x+yi

(a,b,x,y属于int范围,且计算结果不会溢出)

Sample Input

2 1 1 2 1 1 1 -1 1 0 0 1

Sample Output

3+3i 1-1i 2 2i 1+1i 1-1i


#include <iostream>
#include <string>
using namespace std;

class MyComplex{
public:
    MyComplex(): real(0), imaginary(0){}
    MyComplex(int r, int i): real(r), imaginary(i){}

    // 成员函数 myAdd() 和 myMinus()
    void myAdd(const MyComplex& c);
    void myMinus(const MyComplex& c);

    // 显示结果
    void showAnswer();

private:
    int real;
    int imaginary;
};

// 实现 myAdd() 成员函数
void MyComplex::myAdd(const MyComplex& c){
    real += c.real;
    imaginary += c.imaginary;
}

// 实现 myMinus() 成员函数
void MyComplex::myMinus(const MyComplex& c){
    real -= c.real;
    imaginary -= c.imaginary;
}

// 实现 showAnswer() 成员函数
void MyComplex::showAnswer(){
    if (real != 0 && imaginary != 0) {
        cout << real;
        if (imaginary > 0) {
            cout << "+" << imaginary << "i";
        } else if (imaginary < 0) {
            cout << imaginary << "i";
        } else {
            cout << endl;
        }
    } else if (real != 0 && imaginary == 0) {
        cout << real << endl;
    } else if (real == 0 && imaginary != 0) {
        cout << imaginary << "i" << endl;
    } else {
        cout << 0 << endl;
    }
}

int main() {
   int a, b, x, y;
   while (cin >> a >> b >> x >> y) {
      MyComplex c1(a,b);
      MyComplex c2(x,y);

      MyComplex sum = c1;
      sum.myAdd(c2);

      MyComplex diff = c1;
      diff.myMinus(c2);

      sum.showAnswer();
      diff.showAnswer();
   }
   return 0;
}