第十三周实践项目1————分数类的运算符重载(2)
来源:互联网 发布:linux中man命令 编辑:程序博客网 时间:2024/06/08 15:42
问题及代码:
/*copyright(c)2016.烟台大学计算机学院 * All rights reserved, * 文件名称:text.Cpp * 作者:吴敬超 * 完成日期:2016年5月24日 * 版本号:codeblock * * 问题描述: 分数类中的运算符重载 * 输入描述: * 程序输出: 输出结果 */#include <iostream>#include <Cmath>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1):nume(nu),deno(de) {} void simplify(); void setfr(int nu,int d) { nume=nu; deno=d; } void display() { cout<<nume<<"/"<<deno<<endl;; } CFraction operator+(const CFraction &c); CFraction operator-(const CFraction &c); CFraction operator*(const CFraction &c); CFraction operator/(const CFraction &c); friend CFraction operator+(CFraction c,int d); friend CFraction operator-(CFraction c,int d); friend CFraction operator*(CFraction c,int d); friend CFraction operator/(CFraction c,int d); 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 CFraction::simplify(){ int m,n,r; n=fabs(deno); m=fabs(nume); while(r=m%n) { m=n; n=r; } deno/=n; nume/=n; if (deno<0) { deno=-deno; nume=-nume; }}CFraction CFraction::operator+(const CFraction &c){ CFraction t; t.nume=nume*c.deno+c.nume*deno; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction:: operator-(const CFraction &c){ CFraction t; t.nume=nume*c.deno-c.nume*deno; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction:: operator*(const CFraction &c){ CFraction t; t.nume=nume*c.nume; t.deno=deno*c.deno; t.simplify(); return t;}CFraction CFraction:: operator/(const 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::operator>(const CFraction &c){ int this_nume,c_nume,common_deno; this_nume=nume*c.deno; c_nume=c.nume*deno; common_deno=deno*c.deno; if ((this_nume-c_nume)*common_deno>0) return true; return false;}bool CFraction::operator<(const CFraction &c){ int this_nume,c_nume,common_deno; this_nume=nume*c.deno; c_nume=c.nume*deno; common_deno=deno*c.deno; if ((this_nume-c_nume)*common_deno<0) return true; return false;}bool CFraction::operator==(const CFraction &c){ if (*this!=c) return false; return true;}bool CFraction::operator!=(const CFraction &c){ if (*this>c || *this<c) return true; return false;}bool CFraction::operator>=(const CFraction &c){ if (*this<c) return false; return true;}bool CFraction::operator<=(const CFraction &c){ if (*this>c) return false; return true;}CFraction operator+(CFraction c,int d){ CFraction c1(c.nume+d*c.deno,c.deno); return c+c1;}CFraction operator/(CFraction c,int d){ CFraction c1(c.nume*d,c.deno); return c/c1;}CFraction operator*(CFraction c,int d){ CFraction c1(c.nume,c.deno*d); return c*c1;}CFraction operator-(CFraction c,int d){ CFraction c1(c.nume-d*c.deno,c.deno); return c-c1;}int main(){ CFraction x,y,s; x.setfr(1,2); y.setfr(2,7); cout<<"两分数相加"<<endl; s=x+y; s.display(); cout<<"两分数相减"<<endl; s=x-y; s.display(); cout<<"两分数相乘"<<endl; s=x*y; s.display(); cout<<"两分数相除"<<endl; s=x/y; s.display(); cout<<"判断大小"<<endl; cout<<"x+1="<<endl; s=x+1; s.display(); cout<<"x-1="<<endl; s=x-1; s.display(); cout<<"x*1="<<endl; s=x*1; s.display(); cout<<"x/1="<<endl; s=x/1; s.display(); if (x>y) cout<<"大于"; if (x<y) cout<<"小于"; if (x==y) cout<<"等于"; y.display(); return 0;}
运算结果:
0 0
- 第十三周实践项目1————分数类的运算符重载(2)
- 第十三周实践项目1————分数类运算符重载(3)
- 第十三周实践项目1————分数类运算符重载(4)
- 第十三周实践项目1————分数类的运算符重载(1)
- 第十三周上机实践——项目1-分数类中的运算符重载
- 第十三周项目1-分数类中的运算符重载——2
- 第十三周上机实践项目1(2):分数类中的运算符重载
- 第十三周项目1.2—分数中的运算符重载
- 第十三周项目1.3—分数中的运算符重载
- 第十三周项目1.2—分数中的运算符重载
- 第十三周项目1.3—分数中的运算符重载
- 第八周上机实践项目3——分数类的运算符重载(1)
- 第十三周上机时间项目——项目1-分数类中的运算符重载
- 第十三周项目1-分数类中的运算符重载——1
- 第十三周项目1——分数类中的运算符重载
- 第十三周上机实践项目1(1):分数类中的运算符重载
- 第十三周上机实践项目1(4):分数类中的运算符重载
- 第八周上机实践项目3——分数类中的运算符重载(2)
- @Many_to_One@One_to_Many
- 广义表的递归实现
- relief算法研究
- 注释转换
- 二叉树的递归实现
- 第十三周实践项目1————分数类的运算符重载(2)
- Google推荐的图片加载库Glide介绍
- 二叉树的非递归实现
- Gradle生命周期
- 线索二叉树
- 大数运算之字符串模拟
- 操作系统之银行家算法
- 数据结构之堆(Heap)的实现
- 找出N个数据中的最大的K个数据---堆排序