第八周【项目3-分数类中的运算符重载】改进
来源:互联网 发布:二维条码扫描软件 编辑:程序博客网 时间:2024/06/06 07:33
问题及代码:
/* *Copyright (c) 2014,烟台大学计算机学院 *ALL right reserved *文件名:分数类的雏形 *作者;童宇 *完成日期:2015年4月28日 *版本号v1.0 *问题描述:在(1)的基础上,实现分数类中的对象和整型数的四则运算。分数类中的对象可以和整型数进行四则运算,且运算符合交换律。 *输入描述: *程序输出: */#include <iostream>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 output(); CFraction friend operator+(const CFraction &a,const CFraction &b); CFraction friend operator-(const CFraction &a,const CFraction &b); CFraction friend operator*(const CFraction &a,const CFraction &b); CFraction friend operator/(const CFraction &a,const CFraction &b); CFraction friend operator+(const CFraction &a,const int &b); CFraction friend operator-(const CFraction &a,const int &b); CFraction friend operator*(const CFraction &a,const int &b); CFraction friend operator/(const CFraction &a,const int &b); bool friend operator>(const CFraction &d,const CFraction &c); bool friend operator<(const CFraction &d,const CFraction &c); bool friend operator==(const CFraction &d,const CFraction &c); bool friend operator!=(const CFraction &d,const CFraction &c); bool friend operator>=(const CFraction &d,const CFraction &c); bool friend operator<=(const CFraction &d,const CFraction &c);};bool operator>(const CFraction &d,const CFraction &c){ int this_nume,c_nume,common_deno; this_nume=d.nume*c.deno; // 计算分数通分后的分子,同分母为deno*c.deno c_nume=c.nume*d.deno; common_deno=d.deno*c.deno; if ((this_nume-c_nume)*common_deno>0) return true; return false;}bool operator<(const CFraction &d,const CFraction &c){ int this_nume,c_nume,common_deno; this_nume=d.nume*c.deno; c_nume=c.nume*d.deno; common_deno=d.deno*c.deno; if ((this_nume-c_nume)*common_deno<0) return true; return false;}bool operator==(const CFraction &d,const CFraction &c){ if (d!=c) return false; return true;}bool operator!=(const CFraction &d,const CFraction &c){ if (d>c || d<c) return true; return false;}bool operator>=(const CFraction &d,const CFraction &c){ if (d<c) return false; return true;}bool operator<=(const CFraction &d,const CFraction &c){ if (d>c) return false; return true;}CFraction operator+(const CFraction &a,const CFraction &b){ CFraction c(a.nume*b.deno+b.nume*a.deno,a.deno*b.deno); c.simplify(); return c;}CFraction operator-(const CFraction &a,const CFraction &b){ CFraction c(a.nume*b.deno-b.nume*a.deno,a.deno*b.deno); c.simplify(); return c;}CFraction operator*(const CFraction &a,const CFraction &b){ CFraction c(a.nume*b.nume,a.deno*b.deno); c.simplify(); return c;}CFraction operator/(const CFraction &a,const CFraction &b){ CFraction c(b.deno,b.nume); CFraction d=a*c; c.simplify(); return d;}CFraction operator+(const CFraction &a,const int &b){ CFraction c; c.nume=b; c.deno=1; return (a+c);}CFraction operator-(const CFraction &a,const int &b){ CFraction c; c.nume=b; c.deno=1; return (a-c);}CFraction operator*(const CFraction &a,const int &b){ CFraction c; c.nume=b; c.deno=1; return (a*c);}CFraction operator/(const CFraction &a,const int &b){ CFraction c; c.nume=b; c.deno=1; return (a/c);}void CFraction::simplify() //化简(使分子分母没有公因子){ int a,b=nume,c=deno; while(b%c!=0) { a=b%c; b=c; c=a; } nume/=c; deno/=c; if (deno<0) // 将分母转化为正数 { deno=-deno; nume=-nume; }}void CFraction::output(){ cout<<"("<<nume<<"/"<<deno<<")"<<endl;}int main(){ CFraction x(1,3),y(-5,10),s; int a=3; cout<<"分数x=1/3 y=-5/10"<<endl; s=x+y; cout<<"x+y="; s.output(); s=x-y; cout<<"x-y="; s.output(); s=x*y; cout<<"x*y="; s.output(); s=x/y; cout<<"x/y="; s.output(); x.output(); if (x>y) cout<<"大于"<<endl; if (x<y) cout<<"小于"<<endl; if (x==y) cout<<"等于"<<endl; y.output(); cout<<endl; s=x+a; cout<<"x=(1/3),a=3"<<endl; cout<<"x+a="; s.output(); s=x-a; cout<<"x-a="; s.output(); s=x*a; cout<<"x*a="; s.output(); s=x/a; cout<<"x/a="; s.output(); x.output(); if (x>a) cout<<"大于"<<endl; if (x<a) cout<<"小于"<<endl; if (x==a) cout<<"等于"<<endl; y.output(); cout<<endl; return 0;}
运行结果:
学习心得:
认真的我发现之前的程序有误,不过本程序已经改正!
0 0
- 第八周【项目3-分数类中的运算符重载】改进
- 第八周 项目3 分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3-分数类中的运算符重载
- 第八周 项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目三----分数类中的运算符重载
- 第八周 项目三:分数类中的运算符重载
- 第八周项目三 分数类中的运算符重载
- 第八周项目三--分数类中的运算符重载
- 第八周项目三-分数类中的运算符重载
- 第八周上机实践项目3-分数类中的运算符重载(分数与分数、分数与整数)
- 黑马程序员——JAVA中的环境变量:path与classpath
- 利用BAPI BAPI_PRODORDCONF_CREATE_TT (CO11N)报工
- 黑马程序员——Objective-C语言知识点总结之内存管理、Block、Protocol
- 自然语言处理工具Stanford Parser相关资料
- 删除linux日志的方法
- 第八周【项目3-分数类中的运算符重载】改进
- vs和MATLAB调用
- 新年寄语
- 第四章
- Git操作总结
- 编程之美初赛B
- Python生成8位随机字符串的一些方法
- python闭包详解+实例演示
- 揭秘:名震天下的震网病毒(Stuxnet)是如何被发现的?