题目描述
实现复数类以及复数类数据的加减运算。复数类的数据成员包括:实部real和虚部imag。real和imag均是整数类型。复数的输入和输出使用重载以后得流符号“>>”,“<<”。
输入
输入第一行为1个复数(按照先实部后虚部顺序输入);
输入第二行为1个复数(按照先实部后虚部顺序输入);
输入第三行为用户希望进行的运算符号,可以是+号也可以是-号;
输出
两个数都进行前自增运算,之后按照用户输入的符号进行运算,并将结果以复数形式输出
样例输入
1 2
3 4
+
1 2
3 4
-
样例输出
6+8i
-2-2i
#include<iostream>
using namespace std;
class com{
private:
int r,i;
public:
friend ostream & operator<<(ostream & out,com &);
friend istream & operator>>(istream& in,com &);
com operator+(com c);
com operator-(com c);
com(int m=0,int n=0);
};
ostream & operator<<(ostream & out,com &x){
if(x.i>0){
out<<x.r<<"+";
if(x.i==1){out<<"i";}
else out<<x.i<<"i";
}
else if(x.i==0){out<<x.r;}
else {
out << x.r;
if (x.i == -1) { out << "-i"; }
else out << x.i << "i";
}
}
istream & operator>>(istream& in,com &x){
in>>x.r>>x.i;
/*
也可以如此
int a,b;
in>>a>>b;
x.r=a;x.i=b;
*/
return in; //也可以不要return值(无return值会提示但是可通过)
}
com com::operator+(com c){
r++;c.r++;
com t;
t.r=r+c.r;
t.i=i+c.i;
return t;
}
com com::operator-(com c){
com t;
r++;c.r++;
t.r=r-c.r;
t.i=i-c.i;
return t;
}
com::com(int m,int n){
r=m;i=n;
}
int main(){
com a1,a2,a3;
cin>>a1>>a2;
char s;
cin>>s;
switch (s) {
case '+' :a3=a1+a2 ;cout<<a3;break;
case '-':a3=a1-a2 ;cout<<a3;break;
}
}