使用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;
}