第八周项目3--分数类运算符重载

来源:互联网 发布:华沙大学知乎 编辑:程序博客网 时间:2024/05/14 05:23
/**Copyright (c) 2014, 烟台大学计算机学院*All rights reserved.*文件名称:test.cpp*作者:于凯*完成日期:2015年 5月 9 日*版本号:v1.0*/#include <iostream>#include <cstdlib>using namespace std;class CFraction{private:    int nume;    int deno;public:    CFraction(int nu=0,int de=1);    void simplify();    CFraction operator+(const CFraction &f2);    CFraction operator-(const CFraction &f2);    CFraction operator*(const CFraction &f2);    CFraction operator/(const CFraction &f2);    bool operator > (const CFraction &f2);    bool operator < (const CFraction &f2);    bool operator >= (const CFraction &f2);    bool operator <= (const CFraction &f2);    bool operator == (const CFraction &f2);    bool operator != (const CFraction &f2);    void display();};CFraction::CFraction(int nu,int de){    if(de==0)    {        cout<<"初始化失败,分母不能为零。"<<endl;        exit(0);    }    else    {        nume=nu;        deno=de;    }}void CFraction::simplify(){    int a=nume,b=deno,c;    while (b!=0)    {        c=a%b;        a=b;        b=c;    }    nume=nume/a;    deno=deno/a;    if((nume>0&&deno<0))    {        nume*=(-1);        deno*=(-1);    }    if(nume<0&&deno<0)    {        nume*=(-1);        deno*=(-1);    }}void CFraction::display(){    if(deno==1)        cout<<nume<<endl;    else        cout<<nume<<"/"<<deno<<endl;}CFraction CFraction::operator+(const CFraction &f2){    return CFraction(nume*f2.deno+f2.nume*deno,deno*f2.deno);}CFraction CFraction::operator-(const CFraction &f2){    return CFraction(nume*f2.deno-f2.nume*deno,deno*f2.deno);}CFraction CFraction::operator*(const CFraction &f2){    return CFraction(nume*f2.nume,deno*f2.deno);}CFraction CFraction::operator/(const CFraction &f2){    return CFraction(nume*f2.deno,deno*f2.nume);}bool CFraction::operator > (const CFraction &f2){    if(nume*f2.deno>f2.nume*deno)        return true;    else return false;}bool CFraction::operator < (const CFraction &f2){    if(nume*f2.deno<f2.nume*deno)        return true;    else return false;}bool CFraction::operator >= (const CFraction &f2){    if(nume*f2.deno<f2.nume*deno)        return false;    else return true;}bool CFraction::operator <= (const CFraction &f2){    if(nume*f2.deno>f2.nume*deno)        return false;    else return true;}bool CFraction::operator == (const CFraction &f2){    if(nume*f2.deno==f2.nume*deno)        return true;    else return false;}bool CFraction::operator != (const CFraction &f2){    if(nume*f2.deno==f2.nume*deno)        return false;    else return true;}int main(){    CFraction f1(5,10),f2(2,5),f3;    cout<<"f1=";    f1.simplify();    f1.display();    cout<<"f2=";    f2.simplify();    f2.display();    if (f1>f2) cout<<"f1 > f2"<<endl;    if (f1<f2) cout<<"f1 < f2"<<endl;    if (f1==f2) cout<<"f1 = f2"<<endl;    if (f1!=f2) cout<<"f1 ≠ f2"<<endl;    if (f1>=f2) cout<<"f1 ≥ f2"<<endl;    if (f1<=f2) cout<<"f1 ≤ f2"<<endl;    f3=f1+f2;    f3.simplify();    cout<<"f1+f2=";    f3.display();    f3=f1-f2;    f3.simplify();    cout<<"f1-f2=";    f3.display();    f3=f1*f2;    f3.simplify();    cout<<"f1*f2=";    f3.display();    f3=f1/f2;    f3.simplify();    cout<<"f1/f2=";    f3.display();    return 0;}

运行结果:


0 0