第七周项目3-分数类中的运算符重载
来源:互联网 发布:mg动画用什么软件 编辑:程序博客网 时间:2024/05/22 11:00
#include <iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void set(int nu=0,int de=1); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void simplify();//化简(使分子分母没有公因子) void display(); int gcd(int d,int n); CFraction operator+(const CFraction &c); //两个分数相加,结果要化简 CFraction operator-(const CFraction &c); //两个分数相减,结果要化简 CFraction operator*(const CFraction &c); //两个分数相乘,结果要化简 CFraction 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); bool operator<=(const CFraction &c);};CFraction::CFraction(int nu,int de){ if(de!=0) { nume=nu; deno=de; }}void CFraction::set(int nu,int de){ if(de!=0) { nume=nu; deno=de; }}void CFraction::input(){ int nu,de; char c; while(1) { cin>>nu>>c>>de; if(c!='/') cout<<"输入格式错误"<<endl; else if(de==0) cout<<"分母不能为0"<<endl; else break; }}void CFraction::simplify(){ int n=gcd(deno,nume); deno/=n; nume/=n;}int CFraction::gcd(int d,int n){ int t; if (n>d) { t=d; d=n; n=t; } int r; while(d!=0) { r=n%d; n=d; d=r; } return n;}void CFraction::display(){ cout<<nume<<'/'<<deno<<endl;;}CFraction CFraction::operator+(const CFraction &c){ CFraction c1; c1.deno=c.deno*deno; c1.nume=c.deno*nume+c.nume*deno; c1.simplify(); return c1;}CFraction CFraction::operator-(const CFraction &c){ CFraction c1; c1.deno=c.deno*deno; c1.nume=c.deno*nume-c.nume*deno; c1.simplify(); return c1;}CFraction CFraction::operator*(const CFraction &c){ CFraction c1; c1.deno=c.deno*deno; c1.nume=c.nume*nume; c1.simplify(); return c1;}CFraction CFraction::operator/(const CFraction &c){ CFraction c1; c1.deno=deno*c.nume; c1.nume=nume*c.deno; c1.simplify(); return c1;}bool CFraction::operator<(const CFraction &c){ int nu1,nu2; nu1=c.deno*nume; nu2=deno*c.nume; if(nu1<nu2) return true; return false;}bool CFraction::operator>(const CFraction &c){ int nu1,nu2; nu1=c.deno*nume; nu2=deno*c.nume; if(nu1>nu2) return true; return false;}bool CFraction::operator==(const CFraction &c){ int nu1,nu2; nu1=c.deno*nume; nu2=deno*c.nume; if(nu1==nu2) return true; return false;}bool CFraction::operator!=(const CFraction &c){ return !(*this==c);}bool CFraction::operator<=(const CFraction &c){ return !(*this>=c);}bool CFraction::operator>=(const CFraction &c){ return !(*this<c);}int main(){ CFraction c1(2,5),c2(3,4),c3; c1.display(); c2.display(); if (c1>c2) cout<<"c1>c2"<<endl; if (c1<c2) cout<<"c1<c2"<<endl; if (c1==c2) cout<<"c1=c2"<<endl; if (c1!=c2) cout<<"c1≠c2"<<endl; if (c1>=c2) cout<<"c1≥c2"<<endl; if (c1<=c2) cout<<"c1≤c2"<<endl; c3=c1+c2; cout<<"c1+c2="; c3.display(); c3=c1-c2; cout<<"c1-c2="; c3.display(); c3=c1*c2; cout<<"c1*c2="; c3.display(); c3=c1/c2; cout<<"c1/c2="; c3.display();}
0 0
- 第七周项目3-分数类中的运算符重载
- 第七周项目 3 分数类中的运算符重载(1)
- 第七周项目 3 分数类中的运算符重载(2)
- 第七周项目3——分数类中的运算符重载
- 第九周--项目3-分数类中的运算符重载
- 第八周 项目3 分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3-分数类中的运算符重载
- 第八周 项目3 分数类中的运算符重载
- 八周 项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周上机实践项目3-分数类中的运算符重载(分数与分数、分数与整数)
- 【iOS】Associative机制:Category功能增强
- LoadRunner12 录制web脚本Action.c为空解决办法
- 关于android上传图片,视频,音频到rails后台服务器
- 内核初始化流程分析
- android的消息处理机制(图+源码分析)——Looper,Handler,Message
- 第七周项目3-分数类中的运算符重载
- 【Financial Markets】6. 技术面试准备问题(持续更新)
- Css中常用的选择器
- eclipse搭新建maven web工程
- 《参禅与悟道》——浅谈人生
- 内部类广播BroadcastReceiver的静态注册
- Windows Phone 触摸拖动
- 使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库
- Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:145