第五周任务2:构造分数“类”
2012-03-21 18:10
253 查看
#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放大5倍为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 { cout << "分母不能为零!"; 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 << "格式不正确,请重新输入!"; else if(deno = 0) cout << "分母不能为零"; else break; } } //化简(使分子分母没有公因子) void CFraction::simplify() { int n ; 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; } //放大n倍,如2/3放大5倍为10/3 void CFraction::amplify(int n) { nume *= n; } //输出:以8/6为例,style为0时,输出8/6; //style为1时,输出4/3; //style为2时,输出1(1/3),表示一又三分之一; //不给出参数和非1、2,认为是方式0 void CFraction::output(int style) { switch(style) { case 0: cout << nume << '/' << deno << endl; break ; case 1: int i; i = gcd(nume,deno); cout << (nume/i) << '/' << (deno/i) << endl; break ; case 2: int nu,de,t; t = gcd(nume,deno); nu = nume/t; de = deno/t; cout << (nu/de) << '(' << (nu%de) << '/' << de << ')' << 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(5,7); c1.output(); cout<<"输入c1: "<<endl; c1.input(); c1.output(0); cout<<"关于c2: "<<endl; c2.output(0); c2.output(1); c2.output(2); c2.output(3); cout<<"将c2化简: "<<endl; c2.simplify(); c2.output(0); cout<<"将c2放大倍: "<<endl; c2.amplify(5); c2.output(0); c2.output(2); system("pause"); return 0; }
相关文章推荐
- 第五周上机任务项目1 分数的各种运算
- 第五周任务一(构造函之无参与有参的应用)
- 《第五周任务二》设计分数类,完成对分数的运算
- 第五周任务二 分数
- 第五周任务2(分数的化简)
- 第五周任务二之分数类
- JAVA--第五周实验--任务1--封装一类三角形对象Triangle,并实现一些求周长求面积的功能。
- JAVA--第五周实验--任务5--封装一类矩阵对象,该类对象具有初始化矩阵的功能、修改矩阵元素的功能
- C#上机 第五周 任务1和任务2 出现次数和逆序
- 第五周上机任务2
- 第五周作业--有向图邻接表表示及反向图构造
- 第五周上机任务---设计三角形类,增加构造函数--第一版V1.0
- 第五周任务一
- 第五周 任务三
- 《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算
- 第五周任务1三角形类添加构造函数
- 第五周 任务一(2)
- 第五周 任务一
- 第五周实验报告(任务3)
- 第五周上机任务1