第八周【项目3-分数类中的运算符重载】
2014-04-16 18:41
393 查看
/* * 程序的版权和版本声明部分 * Copyright (c)2012, 烟台大学计算机学院学生 * All rightsreserved. * 作者: 初瑞 * 完成日期: 2014年 4 月 15 日 * 版本号: v1.0 * 输入描述:无 * 问题描述:无 * 程序输出:无 */ #include <iostream> using namespace std; int gcd(int nu=0,int de=0);//求最大公约数 class CFraction { private: int nume; // 分子 int deno; // 分母 public: //构造函数及运算符重载的函数声明 CFraction(int=0,int=0); void set(int nu=0,int de=0);//改变值的时候用 void display(); void simplify(); bool operator>(CFraction &t); bool operator<(CFraction &t); bool operator=(CFraction &t); CFraction operator+(CFraction &t); CFraction operator-(CFraction &t); CFraction operator*(CFraction &t); CFraction operator/(CFraction &t); }; //重载函数的实现及用于测试的main()函数 CFraction::CFraction(int nu,int de) { nume=nu; deno=de; } void CFraction::set(int nu,int de) { nume=nu; deno=de; } void CFraction::display() { cout<<nume<<"/"<<deno<<endl; } void CFraction::simplify() { int m=gcd(nume,deno); deno/=m; nume/=m; } int gcd(int m, int n) { int min; if(m<n) { for(min=m;min>0;--min) { if(m%min==0&&n%min==0) return min; } } else { for(min=n;min>0;--min) { if(m%min==0&&n%min==0) return min; } } } bool CFraction::operator>(CFraction &t) { if(nume*t.deno>deno*t.nume) return true; else return false; } bool CFraction::operator<(CFraction &t) { if(nume*t.deno<deno*t.nume) return true; else return false; } bool CFraction::operator=(CFraction &t) { if(nume*t.deno==deno*t.nume) return true; else return false; } CFraction CFraction::operator+(CFraction &t) { return CFraction(nume*t.deno+deno*t.nume,deno*t.deno); } CFraction CFraction::operator-(CFraction &t) { return CFraction(nume*t.deno-deno*t.nume,deno*t.deno); } CFraction CFraction::operator*(CFraction &t) { return CFraction(nume*t.nume,deno*t.deno); } CFraction CFraction::operator/(CFraction &t) { return CFraction(nume*t.deno,deno*t.nume); } int main() { CFraction t1(1,5),t2(1,7),t3; cout<<"t1="; t1.display(); t1.simplify(); cout<<"t2="; t2.display(); t2.simplify(); t3=t1+t2; t3.simplify(); cout<<"t1+t2"; t3.display(); t3=t1-t2; t3.simplify(); cout<<"t1-t2"; t3.display(); t3=t1*t2; t3.simplify(); cout<<"t1*t2"; t3.display(); t3=t1/t2; t3.simplify(); cout<<"t1/t2"; t3.display(); cout<<"比较两个分数的大小: "; if(t1==t2) cout<<"t1=t2"<<endl; if(t1<t2) cout<<"t1<t2"<<endl; if(t1>t2) cout<<"t1>t2"<<endl; }
运算结果:
心得体会:在完成项目二后,项目三就变得简单多了,虽然还是有许多小毛病,但我相信随着代码量越编越多,自己的错误将会越来越少。
相关文章推荐
- Flex CheckBox Tree 的两种方式
- Java学习之Hessian通信基础
- SqlServer 查看数据库锁,解除锁,此种情况一般常见都是由于事务所造成
- eclipse 函数编译时报错:undefined reference to `pthread_create’
- 关于ImageIO: CGImageRead_mapData 'open' failed ' XXX error = 2 (No such file or directory)问题
- URL伪静态
- 【算法导论实验3】堆结构与堆排序
- RDD Dependency详解---Spark学习笔记9
- 机器学习中的数学-线性判别分析(LDA), 主成分分析(PCA)
- 每秒万次查询,PHP实现 IP查询归属地
- Windows 下读取DMI信息的方法
- 使用ab进行页面的压力测试
- pro文件常用内容
- 计算机网络
- 算法:数组元素删重
- 扮演发问的角色,也就是问Server
- JAX-WS手动配置实例
- 利用飞信接口发送短信
- 我用过的最好的python编辑器PyScripter
- 对Python、shell的一些思考