注册 登录
编程论坛 C++教室

求大佬帮忙解决问题

Stuffen 发布于 2018-10-17 09:04, 1075 次点击
【以下是题目要求】
可将附件文件内容复制到上机时建立的项目中,在附件文件中上课举例代码的基础上,完善该自定义复数类的代码。

修正计算辐角的表达式并完善两个inline函数,并修改原有代码使用这两个函数。

实现复数与复数、复数与double、double与复数之间的加减乘除运算符重载。

目前无需实现输出,只要代码实现能通过编译即可。
【以下是源代码】
#include "pch.h"
#include <iostream>
#include <cmath>
using namespace std;
class myComplex
{
private:
    double re, im, ra, th;
    inline void xy2rt() {}
    inline void rt2xy() {}
public:
    myComplex(myComplex& c);
    myComplex(double a, double b,
        int mode);
    myComplex operator +(myComplex a);
    friend myComplex operator +(double,myComplex);
};
myComplex::myComplex(myComplex& c)
{
    re = c.re;
    im = c.im;
    ra = c.ra;
    th = c.th;
}
myComplex::myComplex(double a=0, double b=0, int m = 1)
{
    if (m == 1)
    {
        re = a;
        im = b;
        ra = sqrt(a*a + b * b);
        th = atan(b / a);
    }
    else if (m == 2)
    {
        ra = a;
        th = b;
        re = ra * cos(th);
        im = ra * sin(th);
    }
    else
        ra = th = re = im = 0.;
}
myComplex myComplex::operator+(myComplex a)
{
    myComplex sum(*this);
    sum.re += a.re;
    sum.im += a.im;
    sum.ra = sqrt(sum.re*sum.re + sum.im*sum.im);
    sum.th = atan(sum.im / sum.re);
    return sum;
}
int main()
{
    myComplex a(5.,8.), b(a);
    myComplex c;
    c = 0.8 + b;
    return 0;
}
myComplex operator +(double a, myComplex b)
{
    myComplex sum(b);
    sum.re += a;
    sum.xy2rt();
    return sum;
}
多谢大佬啦
0 回复
1