项目1-分数类中的运算符重载2

原创 2016年05月30日 11:20:39

问题及代码:

    /*copyright(c)2016.烟台大学计算机学院
     * All rights reserved,
     * 文件名称:text.Cpp
     * 作者:李一波
     * 完成日期:2016年5月30日
     * 版本号:vc++6.0
     *
     * 问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。
     * 输入描述:
     * 程序输出:
     */
    #include <iostream>
    using namespace std;
    class CFraction
    {
    private:
        int nume;  // 分子
        int deno;  // 分母
    public:
        CFraction(){}
        CFraction(int n,int d):nume(n),deno(d){}
        void show();
        CFraction operator+(const CFraction &a);
        CFraction operator-(const CFraction &a);
        CFraction operator*(const CFraction &a);
        CFraction operator/(const CFraction &a);
        CFraction operator+(const int &a);
        CFraction operator-(const int &a);
        CFraction operator*(const int &a);
        CFraction operator/(const int &a);
        bool operator>(const CFraction &a);
        bool operator<(const CFraction &a);
        bool operator>=(const CFraction &a);
        bool operator<=(const CFraction &a);
        bool operator==(const CFraction &a);
        bool operator!=(const CFraction &a);
        CFraction hua_jian();
    };
    CFraction CFraction::operator+(const CFraction &a)
    {
        CFraction c;
        if(deno==a.deno)
            c.nume=nume+a.nume;
        else
        {
            c.deno=deno*a.deno;
            c.nume=nume*a.deno+a.nume*deno;
        }
        return c.hua_jian();
    }
    CFraction CFraction::operator-(const CFraction &a)
    {
        CFraction c;
        if(deno==a.deno)
            c.nume=nume-a.nume;
        else
        {
            c.deno=deno*a.deno;
            c.nume=nume*a.deno-a.nume*deno;
        }
        return c.hua_jian();
    }
    CFraction CFraction::operator*(const CFraction &a)
    {
        CFraction c;
        c.deno=deno*a.deno;
        c.nume=nume*a.nume;
        return c.hua_jian();
    }
    CFraction CFraction::operator/(const CFraction &a)
    {
        CFraction c;
        c.deno=deno*a.nume;
        c.nume=nume*a.deno;
        return c.hua_jian();
    }
    CFraction CFraction::operator+(const int &a)
    {
        CFraction c;
        c.deno=deno;
        c.nume=nume+deno*a;
        return c.hua_jian();
    }
    CFraction CFraction::operator-(const int &a)
    {
        CFraction c;
        c.deno=deno;
        c.nume=nume-deno*a;
        return c.hua_jian();
    }
    CFraction CFraction::operator*(const int &a)
    {
        CFraction c;
        c.deno=deno;
        c.nume=nume*a;
        return c.hua_jian();
    }
    CFraction CFraction::operator/(const int &a)
    {
        CFraction c;
        c.deno=deno*a;
        c.nume=nume;
        return c.hua_jian();
    }
    bool CFraction::operator>(const CFraction &a)
    {
        if(deno==a.deno)
            if(nume>a.nume)
                return 1;
            else
                return -1;
        else
        {
            if(nume*a.deno>a.nume*deno)
                return 1;
            else
                return -1;
        }
    }
    bool CFraction::operator<(const CFraction &a)
    {
        if(deno==a.deno)
            if(nume<a.nume)
                return 1;
            else
                return -1;
        else
        {
            if(nume*a.deno<a.nume*deno)
                return 1;
            else
                return -1;
        }
    }
    bool CFraction::operator>=(const CFraction &a)
    {
        if(deno==a.deno)
            if(nume>=a.nume)
                return 1;
            else
                return -1;
        else
        {
            if(nume*a.deno>=a.nume*deno)
                return 1;
            else
                return -1;
        }
    }
    bool CFraction::operator<=(const CFraction &a)
    {
        if(deno==a.deno)
            if(nume<=a.nume)
                return 1;
            else
                return -1;
        else
        {
            if(nume*a.deno<=a.nume*deno)
                return 1;
            else
                return -1;
        }
    }
    bool CFraction::operator==(const CFraction &a)
    {
        if(deno==a.deno)
            if(nume==a.nume)
                return 1;
            else
                return -1;
        else
        {
            if(nume*a.deno==a.nume*deno)
                return 1;
            else
                return -1;
        }
    }
    bool CFraction::operator!=(const CFraction &a)
    {
        if(deno==a.deno)
            if(nume!=a.nume)
                return 1;
            else
                return -1;
        else
        {
            if(nume*a.deno!=a.nume*deno)
                return 1;
            else
                return -1;
        }
    }
    CFraction CFraction::hua_jian()
    {
        int t,t1,t2;
        t1=nume;
        t2=deno;
        while(t2!=0)
        {
            t=t1%t2;
            t1=t2;
            t2=t;
        }
        nume/=t1;
        deno/=t1;
        if(deno<0)
        {
            deno=-deno;
            nume=-nume;
        }
        return *this;
    }
    void CFraction::show()
    {
        cout<<nume<<'/'<<deno<<endl;
    }
    //重载函数的实现及用于测试的main()函数
    int main()
    {
        CFraction c1(2,3),c2(5,6),c3;
        int i=2;
        c3=c1+c2;
        cout<<"c1+c2之和是:";
        c3.show();
        c3=c1-c2;
        cout<<"c1-c2之差是:";
        c3.show();
        c3=c1*c2;
        cout<<"c1*c2是:";
        c3.show();
        c3=c1/c2;
        cout<<"c1/c2是:";
        c3.show();
        c3=c1+i;
        cout<<"c1+i之和是:";
        c3.show();
        c3=c1-i;
        cout<<"c1-i之差是:";
        c3.show();
        c3=c1*i;
        cout<<"c1*i是:";
        c3.show();
        c3=c1/i;
        cout<<"c1/i是:";
        c3.show();
        if((c1>c2)==1)
            cout<<"c1大于c2"<<endl;
        else
            cout<<"c1小于c2"<<endl;
        if((c1<c2)==1)
            cout<<"c1小于c2"<<endl;
        else
            cout<<"c1大于c2"<<endl;
        if((c1>=c2)==1)
            cout<<"c1大于等于c2"<<endl;
        else
            cout<<"c1小于c2"<<endl;
        if((c1<=c2)==1)
            cout<<"c1小于等于c2"<<endl;
        else
            cout<<"c1大于c2"<<endl;
        if((c1==c2)==1)
            cout<<"c1等于c2"<<endl;
        else
            cout<<"c1不等于c2"<<endl;
        if((c1!=c2)==1)
            cout<<"c1不等于c2"<<endl;
        else
            cout<<"c1等于c2"<<endl;
        return 0;
    }

运行结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

第十三周项目-项目1-(2)-分数类中的运算符重载

/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:刘涛 * 完成日期:2016年5月21日 *...

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

/*。 *Copyright(c)2014,烟台大学计算机学院 *All right reserved, *文件名:test.cpp *作者:毕玉堂 *完成日期:2015年5月17日 *版本号:v1....

第八周上机实践项目3——分数类的运算符重载(1)

(1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。可以在第4周分数类代码的基础上开始工作。 问题及代码 /* * Copyright (c...

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

(1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。可以在第4周分数类代码的基础上开始工作。 /* * Copyright (c) 2015, ...

第十三周项目 1分数类中的运算符重载

/* *Copyright(c) 2016, 烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:李德坤 *完成日期:20...

15第八周项目三——分数类中的运算符重载(1)

/*  * Copyright (c) 2014, 烟台大学计算机学院  * All rights reserved.  * 文件名称:test.cpp  * 作    者:李晓凯  * 完...

第13周项目1--分数类中的运算符重载

代码: /* *Copyright (c) 2016, 烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp; *作 者:岳成艳2016年5月...

第八周项目三 分数类中的运算符重载1

/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:test.cpp *作 者:徐洪祥 *完成日期:2015年5月9...

第十三周【项目 1分数类中的运算符重载】

/* *Copyright(c) 2016, 烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:main.cpp *作 者:张珩瑞 *完成日期:20...

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

/*。 *Copyright(c)2014,烟台大学计算机学院 *All right reserved, *文件名:test.cpp *作者:毕玉堂 *完成日期:2015年5月7日 *版本号:v1.0...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)