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;
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM