第八周项目3(1)-分数类的运算符重载

来源:互联网 发布:机顶盒禁止安装软件 编辑:程序博客网 时间:2024/06/06 12:45
/*   *Copyright (c) 2014, 烟台大学计算机学院   *All rights reserved.   *文件名称:week8-3-1.cpp   *作者:高赞   *完成日期:2015年 4 月 27 日   *版本号: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
原创粉丝点击