第九周项目3

来源:互联网 发布:centos设置桥接模式 编辑:程序博客网 时间:2024/04/29 10:15
/** 程序的版权和版本声明部分* Copyright (c)2013, 烟台大学计算机学院学生* All rightsreserved.* 文件名称:.cpp* 作者:王英华* 完成日期: 2013年04月22日* 版本号: v1.0* 输入描述:无* 问题描述:无* 程序输出:无*/#include<iostream>using namespace std;class  CFraction{private:    int nume;    int deno;public:    CFraction(int n=1,int d=1):nume(n),deno(d) {}    CFraction  operator+(CFraction &c);    CFraction  operator-(CFraction &c);    CFraction  operator*(CFraction &c);    CFraction  operator/(CFraction &c);    bool  operator>(CFraction &c);    bool operator<(CFraction &c);    bool operator>=(CFraction &c);    bool operator<=(CFraction &c);    bool operator==(CFraction &c);    bool operator!=(CFraction &c);    CFraction  simply(CFraction &c);    friend int divisor(CFraction &c);    CFraction operator+();    CFraction operator-();    CFraction operator~();    friend ostream&operator<<(ostream&,CFraction&);    friend istream&operator>>(istream&,CFraction&);    void display();};CFraction CFraction::operator+(CFraction &c){    CFraction a;    a.deno=deno*c.deno;    a.nume=nume*c.deno+c.nume*deno;    a=simply(a);    return a;}CFraction  CFraction::operator-(CFraction &c){    CFraction a;    a.deno=deno*c.deno;    a.nume=nume*c.deno-c.nume*deno;    if(a.nume==0)    {        return a;    }    else    {        a=simply(a);    }    return a;}CFraction  CFraction::operator*(CFraction &c){    CFraction a;    a.deno=deno*c.deno;    a.nume=nume*c.nume;    a=simply(a);    return a;}CFraction  CFraction::operator/(CFraction &c){    CFraction a;    a.nume=nume*c.deno;    a.deno=deno*c.nume;    a=simply(a);    return a;}bool CFraction::operator > (CFraction &c){    bool g=false;    double c1,c2;    c1=nume/deno;    c2=c.nume/c.deno;    if(c1<0)    {        c1=-c1;    }    if(c2<0)    {        c2=-c2;    }    if(c1>c2)    {        g=true;    }    return g;}bool CFraction::operator < (CFraction &c){    bool g=false;    double c1,c2;    c1=nume/deno;    c2=c.nume/c.deno;    if(c1<c2)    {        g=true;    }    return g;}bool CFraction::operator >= (CFraction &c){    bool g=false;    double c1,c2;    c1=nume/deno;    c2=c.nume/c.deno;    if(c1>c2)    {        g=true;    }    return g;}bool CFraction::operator <= (CFraction &c){    bool g=false;    double c1,c2;    c1=nume/deno;    c2=c.nume/c.deno;    if(c1<c2)    {        g=true;    }    return g;}bool CFraction::operator == (CFraction &c){    bool g=false;    double c1,c2;    c1=nume/deno;    c2=c.nume/c.deno;    if(c1==c2)    {        g=true;    }    return g;}bool CFraction::operator != (CFraction &c){    bool g=false;    double c1,c2;    c1=nume/deno;    c2=c.nume/c.deno;    if(c1!=c2)    {        g=true;    }    return g;}CFraction  CFraction::simply(CFraction &c)  //化简{    CFraction a;    int b=divisor(c);    a.nume=c.nume/b;    a.deno=c.deno/b;    return a;}int divisor(CFraction &c)       //求最大公约数{    int n=min(c.deno,c.nume);    for(int i=n; i>=0; i--)    {        if(c.deno%i==0 && c.nume%i==0)        {            return i;            break;        }    }}void CFraction::display(){    if(nume==0)        cout<<0<<endl;    else        cout<<nume<<"/"<<deno<<endl;}CFraction CFraction::operator+(){    CFraction t;    t.nume=nume;    t.deno=deno;    return t;}CFraction CFraction::operator-(){    CFraction t;    t.nume=-nume;    t.deno=deno;    return t;}CFraction CFraction::operator~(){    CFraction t;    t.nume=deno;    t.deno=nume;    return t;}ostream & operator<<(ostream &output,CFraction &c){    output<<"="<<c.nume<<"/"<<c.deno<<endl;    return output;}istream & operator>>(istream &input,CFraction &c){    cout<<"input nume and deno";    input>>c.nume>>c.deno;    return input;}int main(){    CFraction t1(1,3),t2(3,9),t3;    cout<<"t1为:";    t1.display();    cout<<"t2为:";    t2.display();    cout<<endl;    cout<<"t1+t2=";    t3=t1+t2;    t3.display();    cout<<"t2-t1=";    t3=t2-t1;    t3.display();    cout<<"t1*t2=";    t3=t1*t2;    t3.display();    cout<<"t1/t2=";    t3=t1/t2;    t3.display();    if (t1 > t2) cout << "t1 > t2" << endl;    if (t2 < t1) cout << "t2 < t1" << endl;    if (t2 >= t3) cout << "t2 >= t3" << endl;    if (t2 <= t3) cout << "t2 <= t3" << endl;    if (t2 == t3) cout << "t2 == t3" << endl;    if (t1 != t2) cout << "t1 != t2" << endl;    cout<<"取相反数:"<<endl;    t3=-t1;    cout<<"-t1"<<t3;    t3=-t2;    cout<<"-t2"<<t3;    cout<<"取倒数:"<<endl;   t3=~t1;    cout<<"~t1"<<t3;    t3=~t2;    cout<<"~t2"<<t3;    return 0;}
运行结果:
0 0
原创粉丝点击