第九周上机任务3

来源:互联网 发布:php在线算命系统源码 编辑:程序博客网 时间:2024/05/17 03:56
/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved.* 文件名称:renwu.cpp                              * 作    者:宋本一                              * 完成日期:2012 年 4 月 16 日* 版 本 号:9.3         * 对任务及求解方法的描述部分* 输入描述:略 * 问题描述:略 * 程序输出:略* 程序头部的注释结束*/#include <iostream>    using namespace std;  class CFraction  {  private:  int nume;  // 分子  int deno;  // 分母  int gcd(int m, int n);  public:  //构造函数及运算符重载的函数声明  CFraction(int n=1, int d=1){if(d==0) return;nume=n,deno=d;}  friend CFraction operator +(CFraction &c1,CFraction &c2);  friend CFraction operator -(CFraction &c1,CFraction &c2);  friend CFraction operator *(CFraction &c1,CFraction &c2);  friend CFraction operator /(CFraction &c1,CFraction &c2);  friend 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); friend ostream& operator << (ostream&,CFraction &);  friend istream& operator >> (istream&,CFraction &);    void simplify();  void display();  }; istream& operator >> (istream& input,CFraction & c)  {   input>>c.nume>>c.deno;  return input;  }  ostream& operator << (ostream& output,CFraction & c)  {  output<<c.nume<<'/'<<c.deno<<endl;   return output;  }  void CFraction::simplify()    {    int n=gcd(deno,nume);    deno/=n; nume/=n;    }  int CFraction::gcd(int m,int n)  {  int r;    if(m<n){r=m; m=n; n=r;}    while(r=m%n){    m=n;    n=r;    }    return n;   }void CFraction::display()  {  cout<<nume<<"/"<<deno<<endl;  } CFraction operator +(CFraction &c1,CFraction &c2)  {  CFraction c;  c.deno=c1.deno*c2.deno;  c.nume=c1.nume*c2.deno+c2.nume*c1.deno;  c.simplify();  return c;  } CFraction operator -(CFraction &c1,CFraction &c2)  {  CFraction c;  c.deno=c1.deno*c2.deno;  c.nume=c1.nume*c2.deno-c2.nume*c1.deno;  c.simplify();  return c;  }  CFraction operator *(CFraction &c1,CFraction &c2)  {  CFraction c;  c.deno=c1.deno*c2.deno;  c.nume=c1.nume*c2.nume;  c.simplify();  return c;  }  CFraction operator /(CFraction &c1,CFraction &c2)  {  CFraction c;  c.deno=c1.deno*c2.nume;  c.nume=c1.nume*c2.deno;  c.simplify();  return c;  }  CFraction operator -(CFraction &c)  {  return CFraction(-c.nume,c.deno);  }  bool CFraction::operator >(CFraction &c)  {  CFraction cf(*this/c);  if(cf.nume/cf.deno>1)  return true;  else  return false;  }  bool CFraction::operator <(CFraction &c)  {  CFraction cf(*this/c);  if(cf.nume/cf.deno<1)  return true;  else  return false;  } bool CFraction::operator >=(CFraction &c)  {  CFraction cf(*this/c);  if(cf.nume/cf.deno>=1)  return true;  else  return false;  } bool CFraction::operator <=(CFraction &c)  {  CFraction cf(*this/c);  if(cf.nume/cf.deno<=1)  return true;  else  return false;  }  bool CFraction::operator ==(CFraction &c)  {  CFraction cf(*this/c);  if(cf.nume/cf.deno==1)  return true;  else  return false;  } bool CFraction::operator !=(CFraction &c)  {  CFraction cf(*this/c);  if(cf.nume/cf.deno!=1)  return true;  else  return false;  }   //重载函数的实现及用于测试的main()函数  int main()  {  CFraction c1(1,3),c2(3,6),c3(6,10);  cout<<"c1=";  c1.display();  cout<<"c2=";  c2.display();  cout<<"c3=";  c3.display();  if(c1>c2) cout<<"c1>c2"<<endl;  if(c2<c1) cout<<"c2<c1"<<endl;  if(c2>=c3) cout<<"c2>=c3"<<endl;  if(c2<=c3) cout<<"c2<=c3"<<endl;  if(c2==c3) cout<<"c2==c3"<<endl;  if(c1!=c2) cout<<"c1!=c2"<<endl;  cout<<"c1+c2=";  (c1+c2).display();  cout<<"c1-c2=";  (c1-c2).display();  cout<<"c1*c2=";  (c1*c2).display();  cout<<"c1/c2=";  (c1/c2).display();  cout<<"c3=-c3=";c3=-c3;c3.display();  system("pause");return 0;  }


运行结果:

原创粉丝点击