第六周项目1-分数类雏形(改进)
来源:互联网 发布:数据挖掘常用方法 编辑:程序博客网 时间:2024/06/05 08:26
问题及代码:
/* *Copyright(c)2016,烟台大学计算机与控制工程学院 *All right reserved. *文件名称:77.cpp *作 者:董凯琦 *完成日期:2016年4月5日 *版 本 号:v1.0 * *问题描述:设计一个简单的分数类,完成对分数的几个运算
*输入描述:无 *程序输出: */#include<iostream>#include<Cmath>#include<Cstdlib>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void output(int style=0); //输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; //默认方式0 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 int gcd(int m,int n); // 求m,n的最大公约数};CFraction::CFraction(int nu,int de){ if (de!=0) { nume=nu; deno=de; } else { cout<<"初始化中发生错误,程序退出\n"; exit(0); }}void CFraction::set(int nu,int de){ if (de!=0) { nume=nu; deno=de; }}void CFraction::input(){ int nu,de; char c; while(1) { cout<<"输入分数(m/n): "; cin>>nu>>c>>de; if(c!='/') cout<<"输入格式错误!\n "; else if (de==0) cout<<"分母不能为零!\n "; else break; } nume=nu; deno=de;}void CFraction::simplify(){ int n=gcd(deno,nume); deno/=n; nume/=n;}void CFraction::amplify(int n){ nume*=n;}int CFraction::gcd(int m, int n){ int r; if (m==0) { return n; } while(r=m%n) { m=n; n=r; } return n;}void CFraction::output(int style){ //输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; //默认方式0 int n=gcd(nume,deno); switch(style) { case 0: cout<<"原样:" <<nume<<'/'<<deno<<endl; break; case 1: cout<<"化简形式: "<<nume/n<<'/'<<deno/n<<endl; //输出化简形式,并不是要化简 break; case 2: cout<<"带分数形式:" <<nume/deno<<'('<<(nume/n)%(deno/n)<<'/'<<deno/n<<')'<<endl; break; case 3: cout<<"近似值:" <<nume/double(deno)<<endl; break; default: cout<<"默认原样:" <<nume<<'/'<<deno<<endl; }}int main(){ CFraction c1,c2(8,6); cout<<"About c1:"<<endl; c1.input(); c1.output(0); c1.output(1); c1.output(2); c1.output(3); cout<<"改变c1: "<<endl; c1.set(2,7); c1.output(0); cout<<"将c1化简: "<<endl; c1.simplify(); c1.output(0); cout<<"将c1放大倍: "<<endl; c1.amplify(5); c1.output(1); cout<<"About c2:"<<endl; c2.output(0); c2.output(1); c2.output(2); c2.output(3); cout<<"改变c2: "<<endl; c2.input(); c2.output(0); cout<<"将c2化简: "<<endl; c2.simplify(); c2.output(0); cout<<"将c2放大倍: "<<endl; c2.amplify(5); c2.output(1); return 0;}
运行结果:
知识点总结:
从这个程序中我们进一步了解到了成员函数的实现。
学习心得:
稳而不燥,冷静分析。
0 0
- 第六周项目1-分数类雏形(改进)
- 第六周项目一-分数类的雏形(1)
- 第六周项目(1)-分数类雏形
- 第六周项目-分数类的雏形
- 第六周项目1:分数的雏形
- 第六周项目1分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周上机实践项目1:分数类雏形
- 第六周项目1——分数类的雏形
- 第六周项目1==分数类的雏形
- 第六周【项目1-分数类的雏形】
- 第六周项目1—分数类的雏形
- 第六周 项目1-分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周项目1-分数类的雏形
- 第六周项目一-分数类的雏形(2)
- form表单中的label标签
- Java语句的执行先后顺序
- 一个简单的Linux驱动示例
- iOS中NSTimer的使用
- 你的大数据项目使用的工具正确吗?
- 第六周项目1-分数类雏形(改进)
- 获取应用程序包名信息的简单demo
- 关于Python 中的 map()函数
- IOS之常见有关的View函数
- java中各种进制的转换
- frameset跳出框架-自动跳转
- Odoo8.0不能创建客户问题的解决 Document type: res.partner, Operation: read
- Linux替换文本字符串(Vim编辑器中使用)
- SDAU 1001