第五周作业任务二
2012-03-21 20:49
295 查看
#include <iostream> using namespace std; int gcd(int,int); 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放大五倍为10/3 void output(int style = 0);//输出:以8/6为例,style为0时,输出8/6; //style为1时,输出4/3; //style为2时,输出1(1/3),表示一又三分之一; //不给出参数和非1、2,认为是方式0 }; CFraction::CFraction(int nu,int de) { if(de!=0) { nume=nu; deno=de; } else { cerr<<"分母不能为0"<<endl; exit(0); } } void CFraction::set(int nu,int de) { if(de!=0) {nume=nu; deno=de; } } void CFraction::input() { char c; while(1) { cin>>nume>>c>>deno; if(c!='/') cout<<"格式不对"<<endl; else if(deno==0) cout <<"分母不能为0"<<endl; else break; } } void CFraction::Simplify() { int n=gcd(nume,deno); nume=nume/n; deno=deno/n; } //求最大公约数 int gcd(int x,int y) { int r; while(y!=0) { r=x%y; x=y; y=r; } return x; } void CFraction::amplify(int n) { nume*=n;//分子放大n倍 } void output(int style=0) { int i,nu,de,nume,deno; switch(style) { case 0: cout<<nume<<'/'<<deno<<endl; break; case 1: i=gcd(nume,deno); cout<<(nume/i)<<'/'<<(deno/i)<<endl; break; case 2: i=gcd(nume,deno); nu=nume/i; de=deno/i; cout<<(nu/de)<<"("<<(nu%de)<<'/'<<de<<")"<<endl; break; default: cout<<nume<<'/t'<<deno<<endl; } } int main() { CFraction c1; c1.output(0); c1.amplify(5); c1.output(0); c1.set(8,6); system("pause"); return 0; } 上级感言:这次任务是在老师讲解后完成的,体会到很多,思路也清晰了不少。
相关文章推荐
- 第五周作业任务一
- 第五周作业(任务1)使用默认参数的构造函数,不给定实参时,默认边长为1
- JAVA--第五周实验--任务2--封装一类梯形形对象Triangle,并实现一些求周长求面积的功能。
- 第五周作业
- 第四周&第五周作业
- 第五周作业--时钟表
- 第五周 北理公开课的编程作业题
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业
- 第五周作业——有向图邻接表表示及反向图构造
- 实践作业2:黑盒测试实践——小组任务分工 Day 1
- SQL2008 创建定时任务作业
- 十六周作业任务二
- 第五周作业
- linux进程管理和作业任务
- C++程序设计实验报告(三十九)---第五周任务一
- 第五周实验报告 任务二