第五周作业 2
2012-03-21 07:31
393 查看
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* 文件名称:
* 作 者: 计114-4 孙建朋
* 完成日期: 2012 年 3 月 19 日
* 版 本 号: 2012031902
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述: 分数的化简,放大,输出。
* 程序输出: 按要求输出
* 程序头部的注释结束
*/
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* 文件名称:
* 作 者: 计114-4 孙建朋
* 完成日期: 2012 年 3 月 19 日
* 版 本 号: 2012031902
* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述: 分数的化简,放大,输出。
* 程序输出: 按要求输出
* 程序头部的注释结束
*/
#include<iostream> using namespace std; int gcd(int x,int y); //求最大公约数 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; }; //结构体 CFraction::CFraction(int nu,int de) { if(de!=0) { nume=nu; deno=de; } else { cout<<"分母不能为零"<<endl; exit(0); } } //设定分子分母的值; void CFraction::set(int nu,int de) { if(de!=0) { nume=nu; deno=de; } } //按照"nu/de"的格式,如"5/2"的形式输入 void CFraction::input() { char c; while(1) { cin>>nume>>c>>deno; if(c!='/') cout<<"格式不对,请从新输入:"<<endl; else if(deno==0) cout<<"分母不能为零,请从新输入:"<<endl; else break; } } //化简(使分子分母没有公因子) void CFraction::simplify() { int n=gcd(nume,deno); nume/=n; deno/=n; } //求最大公约数; int gcd(int x,int y) { int r; while(y!=0) { r=x%y; x=y; y=r; } return x; } //放大n倍,如2/3放大5倍为10/3 void CFraction::amplify(int n) { nume*=n; } //输出:以8/6为例,style为0时,输出8/6; void CFraction::output(int style) { int i; switch(style) { case 0: cout<<nume<<'/'<<deno<<endl; break; case 1: i=gcd(nume,deno); cout<<(nume/i)<<'/'<<(deno/i)<<endl; break; case 2: int nu,de; i=gcd(nume,deno); nu=nume/i; de=deno/i; cout<<(nume/deno)<<"("<<(nu/de)<<'/'<<de<<")"<<endl; break; default: cout<<nume<<'/'<<deno<<endl; } } int main() { CFraction c1; c1.output(0); c1.set(24,14); cout<<"假分数形式为:"<<endl; c1.output(0); cout<<"扩大4倍后的值为:"<<endl; c1.amplify(4); c1.output(0); c1.simplify(); cout<<"代分数形式为:"<<endl; c1.output(2); cout<<"请输入您想要的分数:"<<endl; c1.input(); c1.simplify(); cout<<"化简后的值为:"<<endl; c1.output(1); system("pause"); return 0; }
相关文章推荐
- Linux系统管理第五周作业【Linux微职位】
- 第五周作业_Chapter 9课后练习
- 第五周作业_Chapter 10课后练习
- 第五周第一次作业
- python第五周作业——chapter 9 类
- Ng机器学习课程第五周神经网络反向传播算法课后作业初学者的理解
- 第五周作业
- 计科1111-1114班第五周讲义、课外作业(强连通分量、BFS,截止日期:2014年4月11日23点-周五晚,学委飞信通知同学)
- 团队作业-第五周-测试与调试
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业
- 【Linux基础】第五周作业
- 第五周作业
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业_2013551605
- 第五周作业
- 第五周作业——有向图邻接表表示及反向图构造
- 程序设计实习MOOC / 继承和派生——编程作业 第五周程序填空题1