第八周项目3(1)——分数类中的运算符重载
2015-04-28 12:02
417 查看
(1)实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。可以在第4周分数类代码的基础上开始工作。class CFraction
{
private:
int nume; // 分子
int deno; // 分母
public:
//构造函数及运算符重载的函数声明
};
//重载函数的实现及用于测试的main()函数
代码如下:
![](https://img-blog.csdn.net/20150428120658792?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3l6OTUwNjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20150428120616219?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd3l6OTUwNjIw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
总结:没考虑到在除法运算中c.nume==0的结果。不懂比较时度娘是个好帮手
{
private:
int nume; // 分子
int deno; // 分母
public:
//构造函数及运算符重载的函数声明
};
//重载函数的实现及用于测试的main()函数
代码如下:
#include <iostream> int gcd(int m,int n); using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 public: //构造函数及运算符重载的函数声明 CFraction(int nu=0,int de=1):nume(nu),deno(de) {} void simplify(); void display(); 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); }; //重载函数的实现及用于测试的main()函数 int gcd(int m,int n) { int t; if(m<n) { t=m; m=n; n=t; } while(t=m%n) { m=n; n=t; } return n; } void CFraction::simplify() { int n=gcd(nume,deno); nume/=n; deno/=n; } void CFraction::display() { cout<<"("<<nume<<"/"<<deno<<")"<<endl; } CFraction CFraction::operator+(const CFraction &c) { CFraction z; z.nume=nume*c.deno+c.nume*deno; z.deno=deno*c.deno; z.simplify(); return z; } CFraction CFraction::operator-(const CFraction &c) { CFraction z; z.nume=nume*c.deno-c.nume*deno; z.deno=deno*c.deno; z.simplify(); return z; } CFraction CFraction::operator*(const CFraction &c) { CFraction z; z.nume=nume*c.nume; z.deno=deno*c.deno; z.simplify(); return z; } CFraction CFraction::operator/(const CFraction &c) { CFraction z; if(c.nume==0) return *this; z.nume=nume*c.deno; z.deno=deno*c.nume; z.simplify(); return z; } bool CFraction::operator>(const CFraction &c) { int t_nume,c_nume,com_deno; t_nume=nume*c.deno; c_nume=c.nume*deno; com_deno=deno*c.deno; if((t_nume-c_nume)*com_deno>0) return true; return false; } bool CFraction::operator<(const CFraction &c) { int t_nume,c_nume,com_deno; t_nume=nume*c.deno; c_nume=c.nume*deno; com_deno=deno*c.deno; if((t_nume-c_nume)*com_deno<0) return true; return false; } bool CFraction::operator==(const CFraction &c) { if(*this<c||*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) return false; return true; } int main() { CFraction x(10,5),y(3,9),s; x.display(); y.display(); cout<<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(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"等于"<<endl; if (x>=y) cout<<"大于等于"<<endl; if (x<=y) cout<<"小于等于"<<endl; if (x!=y) cout<<"不等于"<<endl; cout<<endl; }
总结:没考虑到在除法运算中c.nume==0的结果。不懂比较时度娘是个好帮手
相关文章推荐
- 第八周项目三----分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目三——分数类中的运算符重载(2)
- 第八周 项目3-分数类中的运算符重载(1)加减乘除和6种比较关系
- 第八周 项目三(1) 分数类中的运算符重载
- 第八周项目 3 分数类中的运算符重载(续)
- 第八周【项目3-分数类中的运算符重载】
- 第八周上机实践项目3——分数类中的运算符重载(2)
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目三(1)(2)分数类的运算符重载(加减乘除分数以及整数)附加输出流。
- 15第八周项目三——分数类中的运算符重载(2)
- 第八周上机任务项目3-分数类中运算符重载
- 第八周项目三分数类中的运算符重载(2)
- 第八周 课后实践:项目三——分数类中的运算符重载(1)
- 第八周(项目三1)——分数类中的运算符重载.
- 第八周项目3——分数类中的运算符重载(四则运算)
- 15第八周项目三——分数类中的运算符重载(1)
- 第八周项目三:分数类中的运算符重载(一)
- 第八周 项目三(1):分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载