问题 E: 1.复数的加法、减法和前自增(★)

题目描述
实现复数类以及复数类数据的加减运算。复数类的数据成员包括:实部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;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值