项目2 分类类的雏形
来源:互联网 发布:kindle软件怎么用 编辑:程序博客网 时间:2024/06/05 05:54
- #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);
- };
- CFraction::CFraction(int nu,int de) //构造函数,初始化用
- {
- if (de!=0)
- {
- nume=nu;
- deno=de;
- }
- else
- {
- cerr<<"初始化中发生错误,程序退出\n";
- exit(0);
- }
- }
- void CFraction::set(int nu,int de) //置值,改变值时用
- {
- if (de!=0) //如果不合适,改变值操作无效
- {
- nume=nu;
- deno=de;
- }
- }
- void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式输入
- {
- 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;
- }
- // 求m,n的最大公约数
- int gcd(int m, int n) //这个函数可以定义为类的成员函数,也可以为一般函数
- {
- int r;
- if (m==0)
- {
- return n;
- }
- while(r=m%n) // 求m,n的最大公约数
- {
- m=n;
- n=r;
- }
- return n;
- }
- void CFraction::amplify(int n) //放大n倍,如2/3放大5倍为10/3
- {
- nume*=n;
- }
- //输出分数:以/6为例
- //style为0时,原样输出8/6;
- //style为1时,输出化简后形式4/3;
- //style为2时,输出1(1/3)形式,表示一又三分之一;
- //style为3时,用小数形式输出,如1.3333;
- void CFraction::output(int style)
- {
- 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<<"关于c1: "<<endl;
- c1.output(0);
- cout<<"改变c1: "<<endl; //测试set函数
- c1.set(2,7);
- c1.output();
- cout<<"输入c1: "<<endl;//测试input函数
- c1.input();
- c1.output(0);
- cout<<"关于c2: "<<endl;//测试output函数
- c2.output(0);
- c2.output(1);
- c2.output(2);
- c2.output(3);
- c2.output();
- cout<<"将c2化简: "<<endl;//测试simplify函数
- c2.simplify();
- c2.output(0);
- cout<<"将c2放大倍: "<<endl;//测试amplify函数
- c2.amplify(5);
- c2.output(0);
- c2.output(1);
- return 0;
- }
0 0
- 项目2 分类类的雏形
- 第四周 项目二 分类类的雏形
- 五.2分类数的雏形
- 第四周项目二 分类数的雏形
- 第四周 项目2-分数类的雏形(2)
- 第五周项目2-分数类的雏形
- 第五周 项目2 分数类的雏形
- **第二学期第五周项目2--分数类的雏形
- 第五周项目2-分数类的雏形
- 第3周-项目2-分数类的雏形
- 第3周项目2-分数类的雏形
- 第4周项目2-分数类的雏形
- 第四周项目2 分数类的雏形
- 第4周项目2--分数类的雏形
- 2015-第4周项目2-分数类的雏形
- 第四周上机项目2分数类的雏形
- 第四周 【项目2-分数类的雏形】
- 第四周 项目2-分数类的雏形(1)
- 使用Qt创建动态和静态链接库
- 队列
- 通过ajax动态加载echarts——简单关系网络实例
- ios学习2-图片切换
- 习惯七:不断更新---平衡的自我更新的原则
- 项目2 分类类的雏形
- Android Theme的设置
- leetcode word ladder II
- 文件读写笔记
- bootstrap学习[3]
- git及其使用
- dir2xml
- 项目三 用对象数组操作长方柱
- linux目录结构及各目录的作用