c++第五次实验-分数类
来源:互联网 发布:网络医生兼职 编辑:程序博客网 时间:2024/06/14 09:00
一、问题及代码
/* 文件名称:项目.cpp * 作 者:严明远 * 完成日期:2017 年 5 月 26 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分: * 输入描述:无 * 问题描述: 五、分数类 C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如分数。我们可以自定义类支持这些数据类型。 本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为运算符重载等积累些感性认识。 分数类的声明为: 项目要求:完成分数类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。 实践策略:(1)不建议一次实现所有成员函数后再调试,而是实现一个,测试一个;(2)本项目的实现及测试顺序可以是:先构造函数和输出output函数(可以先只实现一种输出方式),再set函数,再input函数,等等* 算法设计:略 */ #include<iostream>using namespace std;class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void set(int nu=0,int de=1); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style=0);void display0();//输出:以8/6为例,style为0时,原样输出8/6; void display1(); //style为1时,输出化简后形式4/3; void display2(); //style为2时,输出1(1/3)形式,表示一又三分之一; void display3(); //style为3时,用小数形式输出,如1.3333; //默认方式0 }; void CFraction::display0(){cout<<nume<<'/'<<deno<<endl;}void CFraction::display1(){simplify();}void CFraction::display2(){int m,n;if(nume>deno){m=nume/deno;n=nume%deno;cout<<m<<"("<<n<<"/"<<deno<<")"<<endl;}}void CFraction::display3(){float sun;sun=(float)nume/deno;cout<<sun<<endl;}CFraction::CFraction(int nu,int de){nume=nu;deno=de;}void CFraction::set(int nu,int de){nume=nu;deno=de;}void CFraction::input(){char h;while(1){cout<<"按照\"nu/de\"的格式输入"<<endl;cin>>nume>>h>>deno;if(h!='/'){cout<<"输入格式错误,请重新输入!"<<endl;continue;}else if(deno==0){cout<<"deno"<<"不能为0"<<endl;continue;}else break;}}void CFraction::simplify(){int num=1;int min,max;if(nume>deno){max=nume;min=deno;}else{max=deno;min=nume;}for(int i=2;i<=min;i++){if((deno%i==0)&&(nume%i==0)){num*=i;deno/=i;nume/=i;i--;continue;}}cout<<"最大公约数是:"<<num<<endl;cout<<"约分之后:"<<nume<<'/'<<deno<<endl;}void CFraction::amplify(int n){cout<<"放大"<<n<<"倍:";cout<<(nume=(nume*n))<<"/"<<deno<<endl;}void CFraction::output(int style){switch(style){case 0:display0();break;case 1:display1();break;case 2:display2();break;case 3:display3();break;}}int main(){CFraction t(7,3);t.input(); t.simplify(); t.amplify(5); t.output(0);t.output(1);t.output(2);t.output(3);return 0;}
二、运行结果
阅读全文
0 0
- c++第五次实验-分数类
- 第五次C语言上机实验报告
- 第五次C程序设计实验报告
- 第五次C语言上机实验报告
- C语言第五次上机实验
- c++第五次实验-正整数类
- c++第五次实验(三角形类)
- 第五次实验
- 第五次上机实验
- 第五次上机实验
- 第五次上机实验
- 第五次上机实验
- 第五次上机实验
- 第五次上机实验
- 第五次实验报告
- 第五次上机实验
- 第五次上机实验
- 第五次上机实验
- SpringMVC学习笔记(四):地址映射RequestMapping
- css实战(第一天)
- maven pom.xml jstl
- 《程序员代码面试指南 IT名企算法与数据结构题目最优解》左程云著 pdf
- 修改notepad++的主题(背景色、前景色、字体等)
- c++第五次实验-分数类
- ThinkPHP中实现微信支付(jsapi支付)流程
- 什么是框架 架构 设计模式 比较 对比 区别
- rs.getDate()获取日期,时分秒为0
- cocos2dx 植物大战僵尸 6 植物层
- 《数据结构与算法分析C++描述》Mark.Allen.Weiss.pdf
- TensorFlow初学者必须了解的55个经典案例(HR)
- 《算法图解》pdf
- SimpleDateFormat的yyyy-MM-dd HH:mm:ss跟yyyy-MM-dd hh:mm:ss的区别