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

来源:互联网 发布:java中接口的意义 编辑:程序博客网 时间:2024/05/21 18:50
/**Corpyright (c)2013,烟台大学计算机学院*All right reseved.*作者:张梦佳*完成日期:2014年4月15日*版本号:v1.0*输入描述:*问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。!*程序输出:*问题分析:*算法设计:*/#include <iostream>#include <cmath>#include <cstdlib>using namespace std;class CFraction{private:    int nume;  // 分子    int deno;  // 分母public:    CFraction(int a=0,int b=0)    {        nume=a;        deno=b;    }    CFraction operator+(CFraction &c);    CFraction operator-(CFraction &c);    CFraction operator*(CFraction &c);    CFraction operator/(CFraction &c);    bool operator>(CFraction &c);    bool operator<=(CFraction &c);    void simplify();    //构造函数及运算符重载的函数声明};//重载函数的实现及用于测试的main()函数bool CFraction::operator>(CFraction &c){    if(nume*c.deno>c.nume*nume)        return false;    else        return true;}bool CFraction::operator<=(CFraction &c){    if(!(nume*c.deno>c.nume*nume))        return false;    else        return true;}CFraction CFraction::operator+(CFraction &c){    CFraction s;    s.nume=nume*c.deno+c.nume*deno;    s.deno=deno*c.deno;    return s;}CFraction CFraction::operator-(CFraction &c){    CFraction s;    s.nume=nume*c.deno-c.nume*deno;    s.deno=deno*c.deno;    return s;}CFraction CFraction::operator*(CFraction &c){    CFraction s;    s.nume=nume*c.nume;    s.deno=deno*c.deno;    return s;}CFraction CFraction::operator/(CFraction &c){    CFraction s;    s.nume=nume*c.deno;    s.deno=deno*c.nume;    return s;}void CFraction::simplify(){    int s,q;    if(nume>deno)    {        for(int i=abs(deno);i!=0;i--)        {            s=deno%i;            q=nume%i;            if(s==0&&q==0)                {                    cout<<"("<<nume/i<<"/"<<deno/i<<")"<<endl;                    break;                }        }    }    else    {        if(nume<deno)    {        for(int i=abs(nume);i>0;i--)        {            s=deno%i;            q=nume%i;            if(s==0&&q==0)            {                 cout<<"("<<nume/i<<"/"<<deno/i<<")"<<endl;                 break;            }        }    }    }}int main(){    CFraction t1(3,6),t2(2,3),t3;    t1.simplify();    t2.simplify();    cout<<"t1+t2=";    t3=t1+t2;    t3.simplify();    cout<<"t1*t2=";    t3=t1*t2;    t3.simplify();    cout<<"t1/t2=";    t3=t1/t2;    t3.simplify();    cout<<"t1-t2=";    t3=t1-t2;    t3.simplify();    if(t1<=t2)        cout<<"没有错误!调试完毕!"<<endl;    else        cout<<"哎呀!有错误!"<<endl;    return 0;}


感悟

感觉都差不多!



0 0
原创粉丝点击