第四周 项目二 分数的雏形
来源:互联网 发布:婚纱摄影网络客服 编辑:程序博客网 时间:2024/04/30 05:54
问题及代码:
/**Copyright (c)2014,烟台大学计算机与控制工程学院*All rights reserved.*文件名称:Project.cpp*作 者:chenqin.*完成日期:2015年3月30日*版 本 号:v1.0**问题描述:C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理复数),再如分数。我们可以自定义类支持这些数据类型。 本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为运算符重载等积累些感性认识。 项目要求:完成分数类的设计,并在main()函数中自行定义对象,调用各成员函数,完成基本的测试。 实践策略:(1)不建议一次实现所有成员函数后再调试,而是实现一个,测试一个;(2)本项目的实现及测试顺序可以是:先构造函数和输出output函数(可以先只实现一种输出方式),再set函数,再input函数,等等。 以后我们将能够:(1)定义了int i,j,能用cin>>i>>j;在键盘上输入i和j的值。以后,定义了CFraction c1, c2,可以用cin>>c1>>c2;输入分数,用cout<<c1<<c2;输出分数。(2)i+j完成两个整型数的相加,我们可以通过自行定义成员函数,用c1+c2、c1/c2、c1>c2等,实现分数的四则运算、比较、求倒数等。*程序输入:略*程序输出:略*/#include <iostream>#include <cmath>#include <cstdlib>using namespace std;int gcd(int m,int n);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);//输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; //默认方式0};CFraction::CFraction(int nu,int de)//构造函数,初始化用{ if (de!=0) { nume=nu; deno=de; } else { cerr<<"发生错误,退出程序"; 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 <<"输入格式错误!"; else if (de==0) cout <<"分母不能为零"; else break; } nume=nu; deno=de;}void CFraction::simplify(){ int n=gcd(deno,nume); deno=deno/n; nume=nume/n;}// 求m,n的最大公约数int gcd(int m,int n){ int r; if (m<n) { r=m; m=n; n=r; } while (r=m%n) { m=n; n=r; } return n;}void CFraction::amplify(int n){ nume*=n;}void CFraction::output(int style){ int n; switch(style) { case 0: cout <<"原样:"<<nume<<'/'<<deno<<endl; break; case 1: n=gcd(deno,nume); cout <<"化简形式:"<<nume/n<<'/'<<deno/n<<endl; break; case 2: cout <<"带分数形式:"<<nume/n<<'('<<nume%deno<<'/'<<deno<<')'<<endl; break; case 3: cout <<"近似值:"<<nume/double(deno)<<endl; break; default: cout <<"默认原样:"<<nume<<'/'<<deno<<endl; }}int main(){ CFraction c1,c2(8,6); cout <<"关于c1:"<<endl; c1.output (0); cout <<"改变c1:"<<endl; c1.set(2,7); c1.output(); cout<<"输入c1: "<<endl; c1.input(); c1.output(0); cout<<"关于c2: "<<endl; c2.output(0); c2.output(1); c2.output(3); c2.output(3); c2.output(); cout<<"将c2化简: "<<endl; c2.simplify(); c2.output(0); cout<<"将c2放大倍: "<<endl; c2.amplify(5); c2.output(0); c2.output(1); return 0;}
运行结果:
学习心得:看了很久的题目,思绪是乱的,于是借鉴了老贺的参考详解,自己也领会了其中的深意。
0 0
- 第四周 项目二 分数的雏形
- 第四周项目二:分数类的雏形
- 第四周项目二 分数类的雏形
- 第四周 项目二-分数类的雏形
- 第四周项目二---分数类的雏形
- 第四周项目二:分数类的雏形
- 第四周项目二 分数类的雏形
- 2015年第四周项目二:分数类的雏形
- 第四周 项目二--分数类的雏形
- 第四周项目二——分数类的雏形
- 第四周项目二-分数类的雏形
- 第四周项目二——分数类的雏形
- 15第四周项目二——分数的雏形
- 第四周项目二 分数类的雏形
- 第四周项目二——分数类的雏形
- 第四周项目二 分数类的雏形
- 第四周项目2 分数的雏形
- 第四周 课后实践:项目二——分数类的雏形
- 买了根mini DP转DVI的数据线
- sql where 1=1和 0=1 的作用
- 中嶋谦互的《网络游戏核心技术与实战》
- 十五、Linux系统编程-信号(二)信号分类、可靠信号与不可靠信号、信号发送 pause
- LeetCode 35 Search Insert Position
- 第四周 项目二 分数的雏形
- 修改WampServer的默认端口
- MT7620a+OpenWRT路由系统
- 第四周项目2-分数类的雏形
- js+checkbox +ashx处理前台接收的值
- GitHub 优秀的 Android 开源项目
- MVVM
- Magento 后台订单详情页Items Ordered列表处 增加产品图片显示
- Spark应用连接HBase报NullPointerException