<数据结构>复数四则运算

#include <iostream>
using namespace std;
//之所以用类模板  是因为输入不知道类型
template<class Elem>class Complex{
private:
    Elem reality;
    Elem falsehood;
public:
    Complex(Elem r, Elem f){
        reality = r;
        falsehood = f;
    }
    ~Complex(){
    }
    Complex operator + (const Complex& c1){
        return Complex(reality + c1.reality, falsehood + c1.falsehood);
    }
    Complex operator - (const Complex& c1){
        return Complex(reality - c1.reality, falsehood + c1.falsehood);
    }
    Complex operator * (const Complex& c1){
        return Complex(reality*c1.reality - falsehood*c1.falsehood, reality*c1.falsehood + falsehood*c1.reality);
    }
    Complex operator / (const Complex& c1){
        if (falsehood != 0)
            return Complex((reality * c1.reality + falsehood + c1.falsehood) / (c1.reality*c1.reality + c1.falsehood * c1.falsehood), (falsehood * c1.reality - reality * c1.falsehood) / (c1.reality * c1.reality + c1.falsehood * c1.falsehood));
        else
            cout << "分母不能为0,请重新输入" << endl;
    }
    Elem Reality(){
        return reality;
    }
    Elem Falsehood(){
        return falsehood;
    }
    void Conjugate(){
        falsehood = -falsehood;
    }
    void Output(){
        if (falsehood>0)
        {
            cout << "(" << reality << "+" << falsehood << "i" << ")" << endl;
        }
        else
            cout << "(" << reality << falsehood << "i" << ")" << endl;
    }
};



int main() //测试
{


    float a, b, c, d;
    cin >> a >> b >> c >> d;
    Complex<float> c1(a, b);
    Complex<float> c2(c, d);
    cout << "测试结果:" << endl;
    cout << "两个复数分别为:(1+2i)和(2+3i)" << endl;
    cout << "(1+2i)+(2+3i)=";
    (c1 + c2).Output();
    cout << "\n(1+2i)-(2+3i)=";
    (c1 - c2).Output();
    cout << "\n(1+2i)*(2+3i)=";
    (c1*c2).Output();
    cout << "\n(1+2i)/(2+3i)=";
    (c1 / c2).Output();
    cout << "\nc1的实部是:" << c1.Reality() << endl;
    cout << "\nc1的虚部是:" << c1.Falsehood() << endl;
    cout << "\nc2的实部是:" << c2.Reality() << endl;
    cout << "\nc2的虚部是:" << c2.Falsehood() << endl;
    cout << "\nc1的共轭复数是:";
    c1.Conjugate();
    c1.Output();
    cout << "\nc2的共轭复数是:";
    c2.Conjugate();
    c2.Output();
    system("pause");
    return 0;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值