第九周 项目3 (1)
来源:互联网 发布:九月海子知乎 编辑:程序博客网 时间:2024/05/06 19:27
<span style="font-family:Microsoft YaHei;font-size:18px;color:#000099;">/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*dood luck*文件名称:d.cpp*作 者:张旺华*完成日期:2015年5月16日*版 本 号:v1.0**/#include <iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: //构造函数及运算符重载的函数声明 CFraction(int n=1,int d=1); void setCFraction(int n,int d); void display(); CFraction operator+(); CFraction operator-(); CFraction operator~(); friend CFraction change(CFraction &c); CFraction operator+(CFraction &c); CFraction operator-(CFraction &c); CFraction operator*(CFraction &c); CFraction operator/(CFraction &c); bool operator > (CFraction &t); bool operator < (CFraction &t); bool operator >= (CFraction &t); bool operator <= (CFraction &t); bool operator == (CFraction &t); bool operator != (CFraction &t); //赋值运算符的重载 CFraction operator+=(CFraction &c); CFraction operator-=(CFraction &c); CFraction operator*=(CFraction &c); CFraction operator/=(CFraction &c);};int gcd(int a,int b){ return a%b==0?b:gcd(b,a%b);}CFraction::CFraction(int n,int d){ nume=n; deno=d;}CFraction CFraction::operator+(){ return *this;}CFraction CFraction::operator-(){ CFraction x; x.nume=-nume; x.deno=deno; return x; return *this;}CFraction CFraction::operator~(){ CFraction x; x.nume=deno; x.deno=nume; if(x.deno<0) //保证负分数的负号在分子上 { x.deno=-x.deno; x.nume=-x.nume; } return x;}void CFraction::setCFraction(int n,int d){ nume=n; deno=d;}CFraction change(CFraction &c){ int t,a,b; a=c.nume; b=c.deno; t=gcd(a,b); c.nume/=t; c.deno/=t; return c;}void CFraction::display(){ if(nume!=0&&deno!=0) cout<<nume<<"/"<<deno<<endl; else if(nume==0&&deno!=0) cout<<"0"<<endl; else cout<<"error"<<endl;}CFraction CFraction::operator+(CFraction &c){ CFraction p; p.nume=nume*c.deno+deno*c.nume; p.deno=deno*c.deno; return change(p);}CFraction CFraction::operator-(CFraction &c){ CFraction p; p.nume=nume*c.deno-deno*c.nume; p.deno=deno*c.deno; return change(p);}CFraction CFraction::operator*(CFraction &c){ CFraction p; p.nume=nume*c.nume; p.deno=deno*c.deno; return change(p);}CFraction CFraction::operator/(CFraction &c){ CFraction p; p.nume=nume*c.deno; p.deno=deno*c.nume; return change(p);}bool CFraction::operator > (CFraction &t){ return (nume*t.deno>t.nume*deno);}bool CFraction::operator < (CFraction &t){ return (nume*t.deno<t.nume*deno);}bool CFraction::operator >= (CFraction &t){ return !(nume*t.deno<t.nume*deno);}bool CFraction::operator <= (CFraction &t){ return !(nume*t.deno>t.nume*deno);}bool CFraction::operator == (CFraction &t){ return !(nume*t.deno>t.nume*deno||nume*t.deno<t.nume*deno);}bool CFraction::operator != (CFraction &t){ return (nume*t.deno>t.nume*deno||nume*t.deno<t.nume*deno);}//赋值运算符的重载CFraction CFraction::operator+=(CFraction &c){ nume=nume*c.deno+deno*c.nume; deno=deno*c.deno; return change(*this);}CFraction CFraction::operator-=(CFraction &c){ nume=nume*c.deno-deno*c.nume; deno=deno*c.deno; return change(*this);}CFraction CFraction::operator*=(CFraction &c){ nume=nume*c.nume; deno=deno*c.deno; return change(*this);}CFraction CFraction::operator/=(CFraction &c){ nume=nume*c.deno; deno=deno*c.nume; return change(*this);}int main(){ CFraction t1(7,9),t2; t2=+t1; t2.display(); t2=-t1; t2.display(); t2=~t1; t2.display(); return 0;}</span>
运行结果:
学习心得:
没有考虑到倒数分母为零何为负数的情况;
0 0
- 第九周项目1-(3)
- 第九周项目3(1)
- 第九周 项目3 (1)
- 第九周-项目3
- 第九周 项目3
- 第九周项目3
- 第九周项目3
- 第九周项目3
- 第九周 【项目3
- 第九周 项目3
- 第九周项目3
- 第九周 项目3
- 第九周 【项目3
- 第九周项目3
- 第九周【项目3
- 第九周 【项目3
- 第九周-项目3
- 第九周 【项目3
- 15个IT技术人员必须思考的问题
- 六星经典CSAPP-笔记(10)系统IO
- vs2010 编译mosquitto win32版本,开启websockets,实现消息推送
- javamail学习教程
- Matlab中实现hist2D功能
- 第九周 项目3 (1)
- 双系统启动菜单删除无效Win启动菜单项
- JAVA基础笔记四——异常处理
- 黑豆泡醋
- 【WIN32】CMake的学习总结 3——动态库
- HDU---1233-畅通工程(最小生成树prim)
- 为什么BAT等互联网公司在校招里这么受追捧?
- expect 简单使用
- lintcode:Recover Rotated Sorted Array