构建复数类

  1. 上海交通大学OJ实现复数的加减
  2. 输出包括八行,对应所给程序中的输出。注意输出浮点数保留2位小数
  3. 为什么友元要两个参数
  4. #include<string>
    #include<iostream>
    #include<iomanip>
    usingnamespace std;
    classMyComplex
    {
    public:
    MyComplex(){real=0;imag=0;};
    MyComplex(double r,double i){real=r;imag=i;};
    void display();
    MyComplexoperator+(MyComplex&c1);
    MyComplexoperator-(MyComplex&c1);
    MyComplexoperator*(MyComplex&c1);
    MyComplexoperator/(MyComplex&c1);
    friendMyComplexoperator+=(MyComplex&c1,MyComplex&c2);
    friendMyComplexoperator-=(MyComplex&c1,MyComplex&c2);
    friendMyComplexoperator*=(MyComplex&c1,MyComplex&c2);
    friendMyComplexoperator/=(MyComplex&c1,MyComplex&c2);
    private:
    double real;
    double imag;
    };
    voidMyComplex::display()
    {
    cout<<setiosflags(ios::fixed);
    cout.precision(2);
    cout<<real<<" "<<imag<<endl;
    }
    MyComplexMyComplex::operator+(MyComplex&c1)
    {
    MyComplex temp;
    temp.real=real+c1.real;
    temp.imag=imag+c1.imag;
    return temp;
    };
     
    MyComplexMyComplex::operator-(MyComplex&c1)
    {
    MyComplex temp;
    temp.real=real-c1.real;
    temp.imag=imag-c1.imag;
    return temp;
    }
    MyComplexMyComplex::operator*(MyComplex&c1)
    {
    MyComplex temp;
    temp.real=real*c1.real-imag*c1.imag;
    temp.imag=real*c1.imag+imag*c1.real;
    return temp;
    }
    MyComplexMyComplex::operator/(MyComplex&c1)
    {
    double k;
    k=c1.imag*c1.imag+c1.real*c1.real;
    MyComplex temp;
    temp.real=(real*c1.real+imag*c1.imag)/k;
    temp.imag=(imag*c1.real-real*c1.imag)/k;
    return temp;
    }
    MyComplexoperator+=(MyComplex&c1,MyComplex&c2)
    {
    c1.real+=c2.real;
    c1.imag+=c2.imag;
    return c1;
    }
    MyComplexoperator-=(MyComplex&c1,MyComplex&c2)
    {
    c1.real-=c2.real;
    c1.imag-=c2.imag;
    return c1;
    }
    MyComplexoperator*=(MyComplex&c1,MyComplex&c2)
    {
    MyComplex temp;
    temp.real=c2.real*c1.real-c2.imag*c1.imag;
    temp.imag=c1.real*c2.imag+c1.imag*c2.real;
    c1=temp;
    return c1;
     
    }
    MyComplexoperator/=(MyComplex&c1,MyComplex&c2)
    {
    MyComplex temp;
    double k;
    k=c2.imag*c2.imag+c2.real*c2.real;
    temp.real=(c1.real*c2.real+c1.imag*c2.imag)/k;
    temp.imag=(c1.imag*c2.real-c1.real*c2.imag)/k;
    c1=temp;
    return c1;
    }
     
    int main()
    {
    double x1,y1,x2,y2;
    cin>>x1>>y1>>x2>>y2;
    MyComplex c1(x1,y1),c2(x2,y2),c3,c4,c5,c6,c7;
    c3=c1+c2;
    c4=c1-c2;
    c5=c1*c2;
    c6=c1/c2;
    c3.display();
    c4.display();
    c5.display();
    c6.display();
    c1+=c2;
    c1.display();
    c1-=c2;
    c1.display();
    c1*=c2;
    c1.display();
    c1/=c2;
    c1.display();
    return0;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值