第十三周项目1(4)

来源:互联网 发布:我们的法兰西岁月 知乎 编辑:程序博客网 时间:2024/05/16 23:56
/**Copyright (c) 2016,烟台大学计算机学院*All rights reserved.*文件名称 :*作 者 : 胡昌星*完成日期 : 2016年5月25号*版 本 号 : v6.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 &c1);      CFraction operator-(CFraction &c1);      CFraction operator*(CFraction &c1);      CFraction operator/(CFraction &c1);      //类与数的加、减、乘、除运算      CFraction operator+(int a);      CFraction operator-(int a);      CFraction operator*(int a);      CFraction operator/(int a);      friend CFraction operator+(int a,CFraction &c1);      friend CFraction operator-(int a,CFraction &c1);      friend CFraction operator*(int a,CFraction &c1);      friend CFraction operator/(int a,CFraction &c1);     //类的比较运算      friend int operator>(CFraction &c1,CFraction &c2);      //类的取正取反运算      CFraction &operator+();      CFraction &operator-();      //定义分数类中和运算符重载,实现分数的输入输出,改造显示方式      friend ostream &operator<<(ostream &output,CFraction &c1);      friend istream &operator>>(istream &input,CFraction &c1);      void qualify();      void show()const;  };     //类与类的加、减、乘、除运算  CFraction CFraction::operator+(CFraction &c1)  {      return CFraction(c1.deno*nume+c1.nume*deno,deno*c1.deno);  }  CFraction CFraction::operator-(CFraction &c1)  {      return CFraction(c1.deno*nume-c1.nume*deno,deno*c1.deno);  }  CFraction CFraction::operator*(CFraction &c1)  {      return CFraction(nume*c1.nume,deno*c1.deno);  }  CFraction CFraction::operator/(CFraction &c1)  {      return CFraction(nume*c1.deno,deno*c1.nume);  }  //类与数的加、减、乘、除运算  CFraction CFraction::operator+(int a)  {      return CFraction(a*deno+nume,deno);  }  CFraction CFraction::operator-(int a)  {      return CFraction(nume-a*deno,deno);  }    CFraction CFraction::operator*(int a)  {      return CFraction(nume*a,deno);  }  CFraction CFraction::operator/(int a)  {      return CFraction(nume,deno*a);  }  //类与数的加、减、乘、除运算,运算符合交换律  CFraction operator+(int a,CFraction &c1)  {      return CFraction(a*c1.deno+c1.nume,c1.deno);  }  CFraction operator-(int a,CFraction &c1)  {      return CFraction(a*c1.deno-c1.nume,c1.deno);  }  CFraction operator*(int a,CFraction &c1)  {      return CFraction(c1.nume*a,c1.deno);  }  CFraction operator/(int a,CFraction &c1)  {      return CFraction(c1.deno*a,c1.nume);  }  //类的取正取反运算  CFraction &CFraction::operator+()  {      nume=nume;      deno=deno;      return *this;  }  CFraction &CFraction::operator-()  {      int n=nume;      nume=deno;      deno=n;      return *this;  }   //定义分数类中和运算符重载,实现分数的输入输出,改造显示方式  ostream &operator<<(ostream &output,CFraction &c1)  {      output<<c1.nume<<'/'<<c1.deno<<endl;      return output;  }  istream &operator>>(istream &input,CFraction &c1)  {      cout<<"请输入分数的分子、分母部分:";      input>>c1.nume>>c1.deno;      return input;  }  int operator>(CFraction &c1,CFraction &c2)  {      if(c1.deno!=c2.deno)      {          if(c1.deno>c2.deno)              return 0;          else              return 1;      }      if(c1.deno==c2.deno)      {          if(c1.nume>c2.nume)              return 1;          else              return 0;      }  }  void CFraction::qualify()  {      int k=1,n=nume,d=deno;      while(deno!=0)      {          k=nume%deno;          nume=deno;          deno=k;      }      n=n/nume;      d=d/nume;      nume=n;      deno=d;  }  void CFraction::show()const  {      if(deno==1)          cout<<nume<<endl;      else      cout<<nume<<'/'<<deno<<endl;  }  int main()  {      CFraction c1(1,2),c2(1,4),c3,a(1,3);      int i=2;      c3=c1+c2;      c3.qualify();      cout<<"(1/2)+(1/4)=";      c3.show();      c3=c1-c2;      c3.qualify();      cout<<"(1/2)-(1/4)=";      c3.show();      c3=c1*c2;      c3.qualify();      cout<<"(1/2)*(1/4)=";      c3.show();      c3=c1/c2;      c3.qualify();      cout<<"(1/2)/(1/4)=";      c3.show();      c3=a+i;      c3.qualify();      cout<<"(1/3)+2=";      c3.show();      c3=i+a;      c3.qualify();      cout<<"2+(1/3)=";      c3.show();      c3=45+a;      c3.qualify();      cout<<"45+(1/3)=";      c3.show();      c3=a*27;      c3.qualify();      cout<<"(1/3)*27=";      c3.show();      c3=5/a;      c3.qualify();      cout<<"5/(1/3)=";      c3.show();      if(c1>c2)cout<<"(1/2)>(1/4)"<<endl;      else cout<<"(1/2)<(1/4)"<<endl;      +c1;      c1.show();      -c1;      c1.show();      cin>>c3;      cout<<c3;      return 0;  } 

0 0