(补)第十三周——分数的加减(运算符重载)
2016-06-09 08:42
465 查看
/*Copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称 : *作 者 : 田志伟 *完成日期 : 2016年6月9号 *版 本 号 : v1.0 *问题描述 : *输入描述 : *程序输出 : */ #include<iostream> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int x=0,int y=1):nume(x),deno(y){}; void simplify();//化简 CFraction operator+(const CFraction &x); CFraction operator-(const CFraction &x); CFraction operator*(const CFraction &x); CFraction operator/(const CFraction &x);//构造函数及运算符重载的函数声明 friend istream &operator>>(istream &in,CFraction &x); friend ostream &operator<<(ostream &out,CFraction x);//输入输出重载 }; istream &operator>>(istream &in,CFraction &x) { char ch; while(1) { cin>>x.nume>>ch>>x.deno; if (x.deno==0) cerr<<"分母为0, 请重新输入\n"; else if(x.nume == 0) cerr<<"取倒数会出错,请重新输入\n"; else if(ch!='/') cerr<<"格式错误(形如m/n)! 请重新输入\n"; else break; } return cin; } ostream &operator<<(ostream &out,CFraction x) { cout<<x.nume<<'/'<<x.deno<<endl; return cout; } void CFraction::simplify() { int m,n,r; n=deno; m=nume; while(r=m%n) // 求m,n的最大公约数 { m=n; n=r; } deno/=n; // 化简 nume/=n; } CFraction CFraction::operator +(const CFraction &x) { CFraction t; t.deno=x.deno*deno; t.nume=x.nume*deno+nume*x.deno; t.simplify(); return t; } CFraction CFraction::operator -(const CFraction &x) { CFraction t; t.deno=x.deno*deno; t.nume=nume*x.deno-x.nume*deno; //n 分子 d分母 t.simplify(); return t; } CFraction CFraction::operator *(const CFraction &x) { CFraction t; t.deno=x.deno*deno; t.nume=nume*x.nume; t.simplify(); return t; } CFraction CFraction::operator /(const CFraction &x) { CFraction t; t.deno=x.nume*deno; t.nume=nume*x.deno; t.simplify(); return t; } int main() { CFraction x,y; cin>>x; cin>>y; cout<<x+y<<endl; cout<<x-y<<endl; cout<<x*y<<endl; cout<<x/y<<endl; return 0; }
运行结果:
相关文章推荐
- 数组在类中的运算
- 第十/十一周训练 项目5
- poj 3276 Face The Right Way
- 2016山东省赛H题
- 第八周项目一数组做数据成员
- map用法祥析
- 粗浅看 JSTL标签库和EL表达式
- 2048小游戏(javascript代码)
- const导致的编译错误, 浪费了10分钟
- 第十五周项目1——程序填空(范型程序设计)
- 阅读程序(7)
- Struts2中使用POJO
- OpenCV学习Histogram&equalizeHist&Lomography effect&Cartoonize effect实现
- Climbing Stairs
- 第十四周阅读程序2
- 第十五周--阅读程序5
- 第十二周项目训练1.4 阅读程序
- systrace跟踪 Android性能优化
- 两个成员的类模板
- 十一周阅读程序5-a