NO.4简单分数类
来源:互联网 发布:八皇后问题算法流程图 编辑:程序博客网 时间:2024/06/04 21:48
代码:
/* *Copyright (c) 2015 深圳大学信工电子 *ALL right reserved *文件名;简单分数类.cpp *作者;笨鸟 *完成日期2015年11月20日 *问题描述:创建一个类对分数进行四则运算及比较运算 *输入描述:输入两个分数的分子和分母 *程序输出:输出四则运算结果和比较结果 */ #include <iostream>#include <cmath>#include<cstdlib>using namespace std;class fraction {int above;int below;void reduction();void makeCommond(fraction&);public :fraction(int a=0,int b=1) ; //构造函数fraction add(fraction);fraction sub(fraction);fraction mul(fraction);fraction div(fraction);fraction reciprocal();bool equal(fraction);bool greaterThan(fraction);bool lessThan(fraction);void display();void input(); fraction (fraction &m) { //一个复制构造函数 above=m.above; below=m.below;}};fraction::fraction(int a,int b ) { if(b!=0) { above=a; below=b; } else { cerr<<"分母为0,初始化中错误,程序退出\n"; exit(0); }}//分数约分void fraction::reduction() {int k=1;int a,b;a=fabs(above);b=fabs(below);while(1){ k=a%b; if(k==0) break; a=b; b=k;}above/=b;below/=b;}//分数通分void fraction::makeCommond(fraction &m) {reduction();m.reduction();above*=m.below;m.above*=below;below*=m.below;m.below=below;}//分数相加 fraction fraction::add(fraction m) {fraction n;makeCommond(m);n.above=above+m.above;n.below=below;n.reduction();return n;}//分数相减 fraction fraction::sub(fraction m) {fraction n;makeCommond(m);n.above=above-m.above;n.below=below;n.reduction();return n;}//分数相乘 fraction fraction::mul(fraction m) {fraction n;n.above=above*m.above;n.below=below*m.below;n.reduction();return n;}//分数相除 fraction fraction::div(fraction m) {fraction n;n.above=above*m.below;n.below=below*m.above;n.reduction();return n;}//倒数 fraction fraction::reciprocal () {fraction temp;temp.above=below;temp.below=above;temp.reduction();return temp;}//分数比较大小bool fraction::equal(fraction m) {makeCommond(m);return (above==m.above);}bool fraction::greaterThan(fraction m) {makeCommond(m);return (above>m.above);}bool fraction::lessThan(fraction m) {makeCommond(m);return (above<m.above);}void fraction::display() { reduction();cout<<above<<"/"<<below<<endl;}void fraction::input() {cout<<"请输入分子和分母:"<<endl; cin>>above;cin>>below;if(below==0){cerr<<"输入错误,分母不能为0,请重新输入分母:"<<endl; cin>>below;}reduction();}int main () {fraction f1,f2,f3;f1.input();cout<<"第一个分数为:";f1.display(); f2.input(); cout<<"第二个分数为:"; f2.display();cout<<"下面做加法运算:"<<endl;f3=f1.add(f2); f3.display(); cout<<"下面做减法运算:"<<endl; f3=f1.sub(f2); f3.display();cout<<"下面做乘法运算:"<<endl;f3=f1.mul(f2); f3.display(); cout<<"下面做除法运算:"<<endl;f3=f1.div(f2); f3.display();cout<<"下面做倒数运算:"<<endl;f3=f1.reciprocal( ); f3.display();f3=f2.reciprocal( ); f3.display();cout<<"下面做比较运算:"<<endl;if(f1.equal(f2)) cout<<"f1=f2"<<endl;else cout<<"f1!=f2"<<endl;if(f1.greaterThan(f2)) cout<<"f1>f2"<<endl;else if(f1.lessThan(f2)) cout<<"f1<f2"<<endl;cout<<"下面验证复制构造函数:"<<endl;cout<<"调用前分数为;"<<endl;f2.display();cout<<"调用后分数为"<<endl; f2=f1;f2.display();return 0;}
运行:
总结:
待续
0 0
- NO.4简单分数类
- 简单分数类
- 自制简单分数类
- 设计简单的分数类
- 项目二--简单分数类
- 简单分数类之运算符重载
- 简单的分数累加
- 20 分数简单累加
- 任务二:设计一个简单的分数类
- 分数类
- 分数类
- 分数类
- 分数类。。
- 分数类
- 分数类
- 分数类
- 分数类
- 分数类
- 日期时间格式正则表达式
- 通过HBase Observer同步数据到ElasticSearch
- 简易图片查看器
- Linux驱动部分-(一)内核模块的编写
- getintrinsicwidth()/getIntrinsicHeight()大于或者小于图片实际像素大小
- NO.4简单分数类
- 如何增强自己的自信心?
- IOS学习——Navigation Controller
- 用webView加载的方式拨打电话
- 网络通信
- 往resin 服务器中发送post 报 POST requires content-length
- 哈夫曼树
- Java内功提升之流程控制语句
- Crypto++学习总结---AES