第八周项目三-分数类中的运算符重载
来源:互联网 发布:广东进出口数据 编辑:程序博客网 时间:2024/05/21 10:31
实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。可以在第4周分数类代码的基础上开始工作。
/** Copyright (c) 2015,烟台大学计算机学院* All right reserved.* 作者:赵嵩* 文件:Demo.cpp* 完成时间:2015年05月16日* 版本号:v1.0*/#include <iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: //构造函数及运算符重载的函数声明 CFraction(int n=1,int d=1); CFraction operator+(CFraction &d); CFraction operator-(CFraction &d); CFraction operator*(CFraction &d); CFraction operator/(CFraction &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 setCFraction(int n,int d); void display(); void simplify();};int gcd(int m, int n);//重载函数的实现及用于测试的main()函数CFraction :: CFraction(int n,int d){ nume=n; deno=d;}void CFraction::setCFraction(int n, int d){ nume=n; deno=d;}void CFraction::display(){ cout<<nume<<"/"<<deno<<endl;}void CFraction::simplify()//化简{ int n=gcd(deno, nume); deno/=n; nume/=n;}int gcd(int m, int n) //求最大公约数{ int r; if (m<n) { r=m; m=n; n=r; } while(r=m%n) { m=n; n=r; } return n;}CFraction CFraction::operator+(CFraction &d){ CFraction m; m.nume=nume*d.deno+d.nume*deno; m.deno=deno*d.deno; m.simplify(); return m;}CFraction CFraction::operator-(CFraction &d){ CFraction m; m.nume=nume*d.deno-d.nume*deno; m.deno=deno*d.deno; m.simplify(); return m;}CFraction CFraction::operator*(CFraction &d){ CFraction m; m.nume=nume*d.nume; m.deno=deno*d.deno; m.simplify(); return m;}CFraction CFraction::operator/(CFraction &d){ CFraction m; m.nume=nume*d.deno; m.deno=deno*d.nume; m.simplify(); return m;}bool CFraction::operator>(const CFraction &c){ int anume1,anume2,both; both=this->deno*c.deno; anume1=nume*c.deno; anume2=c.nume*deno; if ((anume1>anume2&&both>0)||(anume1<anume2&&both<0)) return true; return false;}bool CFraction::operator<(const CFraction &c){ int anume1,anume2,both; both=this->deno*c.deno; anume1=nume*c.deno; anume2=c.nume*deno; if ((anume1-anume2)*both<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;}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;}int main(){ CFraction x(1,3),y(-5,10),s; cout<<"分数x=1/3 y=-5/10"<<endl; s=x+y; cout<<"x+y="; s.display(); s=x-y; cout<<"x-y="; s.display(); s=x*y; cout<<"x*y="; s.display(); s=x/y; cout<<"x/y="; s.display(); x.display(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"等于"<<endl; y.display(); cout<<endl; return 0;}
运行结果:
0 0
- 第八周项目三----分数类中的运算符重载
- 第八周 项目三:分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载
- 第八周项目三--分数类中的运算符重载
- 第八周项目三-分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载-(1)分数的加减乘除
- 第八周项目三 分数类中的运算符重载-(2)分数与分数、分数与整数的四则运算
- 第八周 项目3 分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3-分数类中的运算符重载
- 第八周 项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- poj 3278 Catch That Cow(bfs)
- Android_SDK各版本之间的差距
- MySQL索引和优化查询
- 重写代码,是否还要继续?
- kvo /kvc
- 第八周项目三-分数类中的运算符重载
- 今早起来ubuntu系统突然开不了机了,一直卡在logo界面
- JavaScript the Good Parts 读书笔记
- 脸秀-用颜值和世界刚正面
- 1022 - Can't write; duplicate key in table '#sql-1500_26'
- VLC字幕不显示以及乱码白框方框问题解决办法
- 矩阵卷积的快速算法
- openssl简介以及源码移植的交叉编译和安装
- iOS读取和显示PDF文档