Unit9-problem-分数类
来源:互联网 发布:java开源社区有哪些 编辑:程序博客网 时间:2024/04/30 09:12
/*Univercity:烟台大学*@Class</A>计134~4*@Author:薛富磊*@Time:2014-4-28*@Function:(1)定义分数的一目运算+和-,分别代表分数取正和求反, 将“按位取反运算符”~重载为分数的求倒数运算。 (2)定义分数类中<<和>>运算符重载,实现分数的输入输出, 改造原程序中对运算结果显示方式,使程序读起来更自然*@Args:*@Return:*/#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) {};//de!=0 void simplify(); //分数化简 //输入输出的重载 friend istream &operator>>(istream &cin,CFraction &x); friend ostream &operator<<(ostream &cout,CFraction x); CFraction operator+(const CFraction &c); //两个分数相加,结果要化简 CFraction operator-(const CFraction &c); //两个分数相减,结果要化简 CFraction operator*(const CFraction &c); //两个分数相乘,结果要化简 CFraction operator/(const CFraction &c); //两个分数相除,结果要化简 CFraction operator+(); //取正一目运算 CFraction operator-(); //取反一目运算 CFraction operator~(); //取倒数一目运算 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 a,b,c; //数学函数:fabs 原型:extern float fabs(float x); //用法:#include <math.h> 功能:求浮点数x的绝对值 //说明:计算|x|, 当x不为负时返回x,否则返回-x a=fabs(nume); b=fabs(deno); //求最大公约数 while(c=a%b) { a=b; b=c; } nume=nume/b; deno=deno/b; if(deno<0) { nume=-nume; deno=-deno; }}//重载运算符"友元"istream &operator>>(istream &cin,CFraction &x){ char ch; while(1) { cin>>x.nume>>ch>>x.deno; if(ch!='/') cout<<"输入格式错误,重新输入\n"; else if(x.deno==0) cout<<"分母为0,重新输入\n"; else break; } return cin;}ostream &operator<<(ostream &cout,CFraction x){ cout<<x.nume<<"/"<<x.deno<<endl; return cout;}//两个分数相加CFraction CFraction::operator+(const CFraction &c){ CFraction s; s.nume=nume*c.deno+c.nume*deno; s.deno=deno*c.deno; s.simplify(); return s;}//两个分数相减CFraction CFraction::operator-(const CFraction &c){ CFraction s; s.nume=nume*c.deno-c.nume*deno; s.deno=deno*c.deno; s.simplify(); return s;}//两个分数相乘CFraction CFraction::operator*(const CFraction &c){ CFraction s; s.nume=nume*c.nume; s.deno=deno*c.deno; s.simplify(); return s;}//两个分数相除CFraction CFraction::operator/(const CFraction &c){ CFraction s; s.nume=nume*c.deno; s.deno=deno*c.nume; s.simplify(); return s;}CFraction CFraction::operator+(){ return *this;}CFraction CFraction::operator-(){ CFraction t; t.nume=-nume; t.deno=deno; return t;}CFraction CFraction::operator~(){ CFraction t; t.nume=deno; t.deno=nume; if(t.deno<0) { t.deno=-t.deno; t.nume=-t.nume; } return t;}bool CFraction::operator>(const CFraction &c){ int a,b; a=nume*c.deno; b=c.nume*deno; if((a-b)>0) return true; return false;}bool CFraction::operator<(const CFraction &c){ int a,b; a=nume*c.deno; b=c.nume*deno; if ((a-b)<0) return true; return false;}bool CFraction::operator==(const CFraction &c){ if(*this==c)return true; return false;}bool CFraction::operator!=(const CFraction &c){ int a,b; a=nume*c.deno; b=c.nume*deno; if ((a-b)!=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) return false; return true;}int main(){ CFraction x,y,z; cout<<"输入x: "; cin>>x; cout<<"输入y: "; cin>>y; z=x+y; cout<<"x+y="<<z<<endl; z=x-y; cout<<"x-y="<<z<<endl; z=x*y; cout<<"x*y="<<z<<endl; z=x/y; cout<<"x/y="<<z<<endl; cout<<"-x="<<-x<<endl; cout<<"+x="<<+x<<endl; cout<<"x的倒数: "<<~x<<endl; if (x>y) cout<<x<<"大于"<<y<<endl; if (x<y) cout<<x<<"小于"<<y<<endl; if (x==y)cout<<x<<"等于"<<y<<endl; return 0;}/*心得体会: 假期漫漫 无聊之极 骚年努力!!!!*/
0 0
- Unit9-problem-分数类
- Unit9-problem-一元一次方程
- Unit9-problem2 时间类
- unit9
- unit9
- unit9
- unit9
- Unit9
- Problem A: 分数类的输出
- Problem B: 分数类的类型转换
- problem C: 分数类的乘法
- Problem C: 分数类的输出
- Problem D: 分数类的类型转换
- Problem E: 分数类的乘法
- Problem C: 分数类的输出
- Problem D: 分数类的类型转换
- Problem E: 分数类的乘法
- Problem E 分数加减法
- Eclipse将引用了第三方jar包的Java项目打包成jar文件的两种方法
- Android 环境下编译FFmpeg
- repo 更新
- 软考之排序算法(二)——选择排序
- CListCtrl在view中的使用
- Unit9-problem-分数类
- Eclipse快捷键
- 微信公众账号你注册了吗?做营销怎么能错过微信营销。
- yii源码分析流程
- zoj 3229 Shoot the Bullet(有源汇上下界最大流)
- C++/C 宏列表
- Windows平台利用wininet做的HTTP的GET和POST,支持HTTPS
- 关于Cocoa的窗口创建调用-一个nib包含两个窗口
- js获取屏幕相关属性