第十三周项目1.1—分数中的运算符的重载

来源:互联网 发布:网络棋牌作弊器下载 编辑:程序博客网 时间:2024/05/29 17:47
/**Copyright(c) 2016.烟台大学计算机与控制工程学院*ALL rights  reserved.*文件名称:test.cpp*作者:杨驰*完成日期:2016年5月25*问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算*/#include <iostream>#include <Cmath>using namespace std;class CFraction{private:    int nume;  // 分子    int deno;  // 分母public:    CFraction(int nu=1,int de=1):nume(nu),deno(de){}    void simplify();    void display();    CFraction operator+(const CFraction &c);//两个分数相加,结果要化简    CFraction operator-(const CFraction &c);//两个分数相减,结果要化简    CFraction operator*(const CFraction &c);//两个分数相乘,结果要化简    CFraction operator/(const CFraction &c);//两个分数相除,结果要化简    bool operator>(const CFraction &c);    bool operator<(const CFraction &c);    bool operator==(const CFraction &c);    bool operator!=(const CFraction &c);    bool operator>=(const CFraction &c);    bool operator<=(const CFraction &c);};void CFraction::display(){    cout<<nume<<"/"<<deno<<endl;}//分数简化void CFraction::simplify(){    int m,n,t;    n=fabs(deno);    m=fabs(nume);    while(t=m%n)// 求m,n的最大公约数    {       m=n;       n=t;    }    deno/=n;    nume/=n;    if(deno<0)    {      deno=-deno;      nume=-nume;    }}CFraction CFraction::operator+(const CFraction &c){    CFraction t;    t.nume=nume*c.deno+c.nume*deno;    t.deno=deno*c.deno;    t.simplify();    return t;}CFraction CFraction::operator-(const CFraction &c){   CFraction t;   t.nume=nume*c.deno-c.nume*deno;   t.deno=deno*c.deno;   t.simplify();   return t;}CFraction CFraction::operator*(const CFraction &c){   CFraction t;   t.nume=nume*c.nume;   t.deno=deno*c.deno;   t.simplify();   return t;}CFraction CFraction::operator/(const CFraction &c){   CFraction t;   t.nume=nume*c.deno;   t.deno=deno*c.nume;   t.simplify();   return t;}bool CFraction::operator>(const CFraction &c){    int n1,d1;    n1=nume*c.deno-c.nume*deno;    d1=deno*c.deno;    if(n1*d1>0)        return true;    return false;}bool CFraction::operator<(const CFraction &c){    int n1,d1;    n1=nume*c.deno-c.nume*deno;    d1=deno*c.deno;    if(n1*d1<0)        return true;    return false;}bool CFraction::operator==(const CFraction &c){    if(*this!=c)        return false;    return true;}bool CFraction::operator!=(const CFraction &c){    if(*this==c)        return false;    return true;} bool CFraction::operator>=(const CFraction &c){    if(*this<c)        return false;    return true;} bool CFraction::operator<=(const CFraction &c){    if(*this>c)        return false;    return true;}int main(){    char c;    int n,d;    cout<<"输入分数的样例:x/y"<<endl;    cin>>n>>c>>d;    CFraction x(n,d);    x.display();    cin>>n>>c>>d;    CFraction y(n,d);    y.display();    CFraction s;    s=x+y;    cout<<"x+y=";    s.display();    cout<<endl;    s=x-y;    cout<<"x-y=";    s.display();    cout<<endl;    s=x*y;    cout<<"x*y=";    s.display();    cout<<endl;    s=x/y;    cout<<"x/y=";    s.display();    cout<<endl;    if(x>y)        cout<<"大于!"<<endl;    if(x<y)        cout<<"小于! "<<endl;    if(x==y)        cout<<"等于!"<<endl;    return 0;}

0 0
原创粉丝点击