/项目3-分数类中的运算符重载
来源:互联网 发布:编程源代码是什么意思 编辑:程序博客网 时间:2024/06/07 00:48
/* * Copyright (c) 2011, 烟台大学计算机学院* All rights reserved.* 作 者:王静* 完成日期:2013 年 4 月 24 日* 版 本 号:v1.0* 输入描述:* 问题描述:实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。可以从第5周项目2的代码开始工作。* 程序输出:* 问题分析:* 算法设计:略*/#include<iostream>#include<cmath>using namespace std;class CFraction{private:int nume; // 分子int deno; // 分母public: CFraction(int nu=0,int de=1); //置值,改变值时用 CFraction simplify(); //化简(使分子分母没有公因子) //比较运算符(二目)的重载 bool operator > (CFraction &t); bool operator < (CFraction &t); bool operator == (CFraction &t); //二目运算符的重载 CFraction operator+(CFraction &n); CFraction operator-(CFraction &n); CFraction operator*(CFraction &n); CFraction operator/(CFraction &n); void display();};CFraction::CFraction(int nu,int de) //置值{ nume=nu; deno=de;}CFraction CFraction::simplify() { CFraction n; n.nume=nume;n.deno=deno; int i; if(nume%deno==0){ n.deno=1; n.nume=nume/deno; }else{ if(nume>deno){ for(i=2;i<=n.deno;i++){ if(nume%i==0&&deno%i==0){ n.nume=n.nume/i; n.deno=n.deno/i; } } }else{ for(i=2;i<=n.nume;i++){ if(n.nume%i==0&&n.deno%i==0){ n.nume=n.nume/i; n.deno=n.deno/i; } } } } return n;}bool CFraction::operator > (CFraction &t){ if(nume>t.nume||(nume==t.nume&&deno>t.deno)){ return true; }else{ return false; }}bool CFraction::operator < (CFraction &t){ if(nume<t.nume||(nume==t.nume&&deno<t.deno)){ return true; }else{ return false; }}bool CFraction::operator == (CFraction &t){ if(nume==t.nume&&deno==t.deno){ return true; }else{ return false; }}//二目运算符的重载CFraction CFraction::operator+(CFraction &n){ CFraction t; t.deno=deno*n.deno; t.nume=(n.nume)*deno+nume*(n.deno); return t.simplify();}CFraction CFraction::operator-(CFraction &n){ CFraction t; t.deno=deno*n.deno; t.nume=nume*n.deno-n.nume*deno; return t.simplify();}CFraction CFraction::operator*(CFraction &n){ CFraction t; t.deno=deno*n.deno; t.nume=nume*n.nume; return t.simplify();}CFraction CFraction::operator/(CFraction &n){ CFraction t; t.deno=deno*n.nume; t.nume=nume*n.deno; return t.simplify();}void CFraction::display(){ if(deno==1){ cout<<nume<<endl; }else{ cout<<nume<<"/"<<deno<<endl; }}int main(){ CFraction n1(3,2),n2(1,2),n;//构造函数,初始化用 cout<<"n1为:"; n1.display(); cout<<"n2为:"; n2.display(); cout<<"下面比较两个时间大小:\n"; if (n1>n2) cout<<"n1>n2"<<endl; if (n1<n2) cout<<"n1<n2"<<endl; if (n1==n2) cout<<"n1=n2"<<endl; cout<<endl; //下面自行设计对其他运算符的重载的测试 n=n1+n2; n.display(); n=n1-n2; n.display(); n=n1*n2; n.display(); n=n1/n2; n.display(); return 0;}
运行结果:
(贴图)
心得体会:
- 项目3-分数类中的运算符重载
- /项目3-分数类中的运算符重载
- 项目3-分数类中的运算符重载
- 第九周--项目3-分数类中的运算符重载
- 第八周 项目3 分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3-分数类中的运算符重载
- 项目3-分数类中的运算符重载
- 第八周 项目3 分数类中的运算符重载
- 八周 项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第七周项目3-分数类中的运算符重载
- 第八周【项目3-分数类中的运算符重载】
- 第八周项目3 分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 第八周项目3-分数类中的运算符重载
- 高响应比优先调度算法
- flume搭建调试
- Servlet
- vi编辑器的查找与替换
- Windows系统下安装MySQL方法
- /项目3-分数类中的运算符重载
- C++的虚拟继承机制
- c++中的四种强制类型转换
- 项目4-分数类和整型数的四则运算
- struts和jfreechart
- hdu acm 1.2.8 Specialized Four-Digit Numbers (进制转换)
- HTControl之CHTVertScrollBar滚动条控件
- Tomcat 7.0的配置
- Android ViewPager使用详解