第八周项目三 分数类中的运算符重载1
2015-05-09 10:38
344 查看
/* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:test.cpp *作 者:徐洪祥 *完成日期:2015年5月9日 *版 本 号:v1.0 * * 问题描述:实现分数类的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、比较(6种关系)的运算。 * 输入描述: * 程序输出: */ #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) {} 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); }; void CFraction::simplify() { int m,n,r; m=fabs(deno); n=fabs(nume); while(r=m%n) { m=n; n=r; } deno/=n; nume/=n; if(deno<0) { deno=-deno; nume=-nume; } } void CFraction::display() { cout<<nume<<"/"<<deno<<endl; } CFraction CFraction::operator+(const CFraction &c) { CFraction t; t.nume=nume*c.deno+deno*c.nume; t.deno=deno*c.deno; t.simplify(); return t; } CFraction CFraction::operator-(const CFraction &c) { CFraction t; t.nume=nume*c.deno-deno*c.nume; t.deno=deno*c.deno; t.simplify(); return t; } CFraction CFraction::operator*(const CFraction &c) { CFraction t; t.nume=nume*c.nume; t.deno=deno*c.deno; t.simplify(); return t; } CFraction CFraction::operator/(const CFraction &c) { CFraction t; t.nume=nume*c.deno; t.deno=deno*c.nume; t.simplify(); return t; } bool CFraction::operator>(const CFraction &c) { int this_nume,c_nume,common_deno; this_nume=nume*c.deno; c_nume=deno*c.nume; common_deno=deno*c.deno; if((this_nume-c_nume)*common_deno>0) return true; else return false; } bool CFraction::operator<(const CFraction &c) { int this_nume,c_nume,common_deno; this_nume=nume*c.deno; c_nume=deno*c.nume; common_deno=deno*c.deno; if((this_nume-c_nume)*common_deno<0) return true; else return false; } bool CFraction::operator==(const CFraction &c) { if(*this-c!=0) return false; else return true; } bool CFraction::operator>=(const CFraction &c) { if(*this<c) return false; else return true; } bool CFraction::operator<=(const CFraction &c) { if(*this>c) return false; else return true; } bool CFraction::operator!=(const CFraction &c) { if(*this>c||*this<c) return true; else return false; } int main() { CFraction x(2,5),y(-2,3),z; cout<<"x=2/5,y=-2/3"<<endl; z=x+y; cout<<"x+y="; z.display(); z=x-y; cout<<"x-y="; z.display(); z=x*y; cout<<"x*y="; z.display(); z=x/y; cout<<"x/y="; z.display(); if(x>y) cout<<"x>y"<<endl; if(x<y) cout<<"x<y"<<endl; if(x==y) cout<<"x=y"<<endl; cout<<endl; return 0; }
总结:
相关文章推荐
- 第八周【项目3-分数类中的运算符重载】
- 第八周上机任务项目3-分数类中运算符重载
- 15第八周项目三——分数类中的运算符重载(2)
- 第八周项目三分数类中的运算符重载(2)
- 第八周(项目三1)——分数类中的运算符重载.
- 第八周 项目三(1):分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载
- 第八周 课后实践:项目三——分数类中的运算符重载(1)
- 第八周项目3(1)-分数类的运算符重载
- 第八周 项目三 分数类中的运算符重载(1)
- 第八周项目3——分数类中的运算符重载(四则运算)
- 15第八周项目三——分数类中的运算符重载(1)
- 第八周项目三:分数类中的运算符重载(一)
- 第八周【项目3-分数类中的运算符重载】
- 第八周(项目三2)——分数类中的运算符重载。
- 第八周项目3-分数类中的运算符重载
- 第八周项目3(2)-分数类的运算符重载
- 第八周项目3-分数类中的运算符重载(二)
- 第八周 项目3--实现分数类中的运算符重载
- 第二学期第八周项目3--分数类中的运算符重载(1)