c++复习一:复数运算的简单实现。

复数运算的简单实现。

程序很简单了。基本忘光了复数,重新了解了基本概念。如何在平面表示一个复数,复数的长度|x|=开根 a^2+b^2.和四则运算。

程序基本点:

封装和抽象:

1)封装成员数据,私有。 

2)分治思想,或树形数据结构,来解决运算。子结果和运算数 抽象为同一个类型。

main.cpp

#include <iostream>
#include "complexNumber.h"


using namespace std;

int main()
{
    compleNumber a(2,4);
    compleNumber b(3,5);
    compleNumber c=a/b+a;
    cout<<c<<endl;

    return 0;
}

 

complexNumber.h
#ifndef COMPLEXNUMBER_H_INCLUDED
#define COMPLEXNUMBER_H_INCLUDED

#include <iostream>

using namespace std;

class compleNumber
{
public:
    compleNumber(float,float);
    float getRealPart()const;
    float getComplexPart()const;
private:
    compleNumber();
    float a;
    float b;
};

compleNumber operator+(const compleNumber&,const compleNumber&);
compleNumber operator-(const compleNumber&,const compleNumber&);
compleNumber operator*(const compleNumber&,const compleNumber&);
compleNumber operator/(const compleNumber&,const compleNumber&);

ostream& operator<<(ostream& os,const compleNumber& complexNumb);

#endif // COMPLEXNUMBER_H_INCLUDED

complexNumber.cpp
//class compleNumber
//{
//public:
//    compleNumber(float,float);
//private:
//    compleNumber();
//    float a;
//    float b;
//};
//
//compleNumber operator+(const compleNumber&,const compleNumber&);
//compleNumber operator-(const compleNumber&,const compleNumber&);
//compleNumber operator*(const compleNumber&,const compleNumber&);
//compleNumber operator/(const compleNumber&,const compleNumber&);

#include "complexNumber.h"

compleNumber::compleNumber(float _a,float _b):a(_a),b(_b){}

ostream& operator<<(ostream& os,const compleNumber& complexNumb)
{
    return os<<complexNumb.getRealPart()<<"+"<<complexNumb.getComplexPart()<<"i";
}

float compleNumber::getRealPart()const
{
    return a;
}
float compleNumber::getComplexPart()const
{
    return b;
}

compleNumber operator+(const compleNumber& left,const compleNumber& right)
{
    compleNumber ret(left.getRealPart()+right.getRealPart(),left.getComplexPart()+right.getComplexPart());
    return ret;
}

compleNumber operator-(const compleNumber& left,const compleNumber& right)
{
    compleNumber ret(left.getRealPart()-right.getRealPart(),left.getComplexPart()-right.getComplexPart());
    return ret;
}

compleNumber operator*(const compleNumber& left,const compleNumber& right)
{
    compleNumber ret(left.getRealPart()*right.getRealPart()-left.getComplexPart()*right.getComplexPart(),left.getRealPart()*right.getComplexPart()+left.getComplexPart()*right.getRealPart());
    return ret;
}

compleNumber operator/(const compleNumber& left,const compleNumber& right)
{
    double PYfenmu=right.getComplexPart()*right.getComplexPart()+right.getRealPart()*right.getRealPart();
    double realpart=(left.getRealPart()*right.getRealPart()+left.getComplexPart()*right.getComplexPart())/PYfenmu;
    double complexPart=(left.getComplexPart()*right.getRealPart()-left.getRealPart()*right.getComplexPart())/PYfenmu;
    compleNumber ret(realpart,complexPart);
    return ret;
}

 

转载于:https://www.cnblogs.com/lsfv/p/6054099.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值