PTA(三十一)面向对象程序设计 第五章 作业 7-2 复数计算 (10 point(s))

7-2 复数计算 (10 point(s))

定义复数类Complex,并重载运算符:+、-、-=,使复数类对象完成相应的运算。 根据以下代码段,完善??处的内容及程序内容,以实现规定的输出。

class Complex
{
    public:
        Complex(double r=0, double i=0):real(r), imag(i){    }
        Complex operator+( ?? ) ;              //重载双目运算符'+'
        Complex operator-=( ?? );             //重载双目运算符'-='
        friend Complex operator-( ?? );    //重载双目运算符'-'
        void Display() const;
    private:
        double real;
        double imag;
};

void Complex::Display() const
{
    cout << "(" << real << "," << imag << ")" << endl;
}
int main()
{
    double r, m;
    cin >> r >> m;
    Complex c1(r, m);
    cin >> r >> m;
    Complex c2(r, m);
    Complex c3 = c1+c2;
    c3.Display();
    c3 = c1-c2;
    c3.Display();
    c3 -= c1;
    c3.Display();
    return 0;
}

输入格式:
输入有两行,分别为两个复数的实部与虚部。

输出格式:
按样例格式输出结果。

输入样例:
在这里给出一组输入。例如:

2 -3
-4 5

输出样例:
在这里给出相应的输出。例如:

(-2,2)
(6,-8)
(4,-5)

收获

  • 创建对象初始化记得赋值
  • 类中的双目运算符重载默认第一个是对象本身,也就是说左边的元一定要是该对象
#include<iostream>
using namespace std;
class Complex
{
    public:
        Complex(double r=0, double i=0):real(r), imag(i){};
        Complex operator+(const Complex& c){
            Complex temp;
            temp=*this;
            temp.real += c.real;
            temp.imag += c.imag;
            return temp;
        } ;              //重载双目运算符'+'
        Complex operator-=(const Complex& c){
            real-=c.real;
            imag-=c.imag;
            return *this;
        };             //重载双目运算符'-='
        friend Complex operator-(const Complex& c1, const Complex& c2);    //重载双目运算符'-'
        void Display() const;
    private:
        double real;
        double imag;
};
Complex operator-(const Complex& c1,const Complex& c2){
    Complex temp;
    temp.real=c1.real-c2.real;
    temp.imag=c1.imag-c2.imag;
    return temp;
}

void Complex::Display() const
{
    cout << "(" << real << "," << imag << ")" << endl;
}
int main()
{
    double r, m;
    cin >> r >> m;
    Complex c1(r, m);
    cin >> r >> m;
    Complex c2(r, m);
    Complex c3 = c1+c2;
    c3.Display();
    // c1.Display();
    // c2.Display();
    c3 = c1-c2;
    c3.Display();
    c3 -= c1;
    c3.Display();
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值