第8周项目--分数类

来源:互联网 发布:zara抄袭知乎 编辑:程序博客网 时间:2024/05/16 06:21
#include <iostream>using namespace std;int gac(int x,int y);class CFraction{private:    int nume;  // 分子    int deno;  // 分母public:    CFraction(int nu=0,int de=1);      //构造函数,初始化用    void set(int nu,int de);      //置值,改变值时用    void input();//按照"nu/de"的格式,如"5/2"的形式输入    CFraction operator+(CFraction &c);    CFraction operator-(CFraction &c);    CFraction operator*(CFraction &c);    CFraction operator/(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 simplify();//化简(使分子分母没有公因子)    void display();};CFraction:: CFraction(int nu,int de){    nume=nu;    deno=de;}void CFraction::set(int nu,int de){    if(de!=0)    {        nume=nu;        deno=de;        cout<<"变为:"<<nume<<"/"<<deno<<endl;    }    else        cout<<"赋值格式错误!!"<<endl;}void CFraction::input(){    char c;    cin>>nume>>c>>deno;}void CFraction::display(){    cout<<nume<<"/"<<deno<<endl;}CFraction CFraction::operator+(CFraction &c){    int d=deno*c.deno;    return CFraction(c.deno*nume+c.nume*deno,d);}CFraction CFraction::operator-(CFraction &c){    return CFraction(c.deno*nume-c.nume*deno,deno*c.deno);}CFraction CFraction::operator*(CFraction &c){    return CFraction(nume*c.nume,deno*c.deno);}CFraction CFraction::operator/(CFraction &c){    CFraction t;    if (!c.nume) return *this;   //除法无效时,这种情况需要考虑,但这种处理仍不算合理    t.nume=nume*c.deno;    t.deno=deno*c.nume;    t.simplify();    return t;}bool CFraction::CFraction::operator>(const CFraction &c){    if(nume*c.deno>deno*c.nume)        return 1;    else return 0;}bool CFraction::operator<(const CFraction &c){    if(nume*c.deno<deno*c.nume)        return 1;    else return 0;}bool CFraction::operator==(const CFraction &c){    if(nume*c.deno==deno*c.nume)        return 1;    else return 0;}bool CFraction::operator!=(const CFraction &c){    if(!(*this<c)||(*this>c))        return 1;    else return 0;}bool CFraction::operator>=(const CFraction &c){    if((*this)<c)        return 0;    else return 1;}bool CFraction::operator<=(const CFraction &c){    if(*this>c)        return 1;    else return 0;}void CFraction::simplify(){    int n;    n=gac(nume,deno);    nume/=n;    deno/=n;    cout<<"化简后: "<<nume<<"/"<<deno<<endl;}int main(){    CFraction x(1,3),y(-5,10),s;    cout<<"分数x=1/3      y=-5/10"<<endl;    s=x+y;    cout<<"x+y=";    s.simplify();    s.display();    s=x-y;    cout<<"x-y=";    s.simplify();    s.display();    s=x*y;    cout<<"x*y=";    s.simplify();    s.display();    s=x/y;    cout<<"x/y=";    s.display();    x.display();    if (x>y) cout<<"大于"<<endl;    if (x<y) cout<<"小于"<<endl;    if (x==y) cout<<"等于"<<endl;    s.simplify();    y.display();    cout<<endl;    return 0;}int gac(int x,int y){    int t;    if(x>y)    {        t=x;        x=y;        y=t;    }    while((t=y%x)!=0)    {        y=x;        x=t;    }    return x;}

0 0
原创粉丝点击