第6周项目1-分数类的雏形(4)
来源:互联网 发布:怎么看windows 版本 编辑:程序博客网 时间:2024/06/15 14:36
/* *Copyright(C) 2016,计算机与控制工程学院 *All rights reserved. *文件名:test.cpp *作者:张志新 *完成日期:2016年4月10日 *版本号:v1.0 * *问题描述:分数的输入输出(4)。 */ #include<iostream>#include<Cmath> #include<cstdlib> using namespace std;int gcd(int n,int d);class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu=0,int de=1); //构造函数,初始化用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入void set(int nu=0,int de=1); //置值,改变值时用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时,输出1(1/3)形式,表示一又三分之一; //style为2时,用小数形式输出,如1.3333; //默认方式0};CFraction::CFraction(int nu,int de) { if(de!=0) { nume=nu; deno=de; } else { cout<<"输入格式错误"; } } void CFraction::input(){int nu,de;char c;while(1){cout<<"输入分数(m/n):";cin>>nu>>c>>de;if(c!='/')cout<<"输入格式错误!\n";else if(de==0)cout<<"分子不能为零!\n";elsebreak;}nume=nu;deno=de;}void CFraction::set(int nu,int de){nume=nu;deno=de;}void CFraction::simplify(){ int n=gcd(nume,deno); nume=nume/n; deno=deno/n;}void CFraction::output(int style) { int n=gcd(nume,deno); switch(style) { case 0: cout<<"原样输出:"<<endl; cout<<nume<<'/'<<deno<<endl; break; case 1: cout<<"化简后的分数:"<<endl; cout<<nume/n<<'/'<<deno/n<<endl; break; case 2: if(nume<deno) cout<<"无带分数形式!"<<endl; else { cout<<"带分数形式输出:"<<endl; cout<<nume/deno<<"("<<nume%deno<<'/'<<deno<<")"<<endl; } break; case 3: cout<<"小数形式输出:"<<endl; cout<<nume/(double)deno<<endl; break; default: cout<<"默认输出"<<endl; cout<<nume<<'/'<<deno<<endl; }} void CFraction::amplify(int n){nume=nume*n;}int gcd(int n,int d){ int t,r; if(n==0) { return d; } if(n>d) { t=n; n=d; d=t; } while(r!=0) { r=d%n; d=n; n=r; }return d;}int main(){CFraction c1,c2(4,5);c1.input(); c1.output(0); c1.output(1); c1.output(2);c1.output(3);cout<<"改变分数和之后:"<<endl;c2.output(0);c2.set(8,9);//改变分数的之后c2.output(0); c2.output(1); c2.output(2);c2.output(3);c2.amplify(4);cout<<"加倍后:"<<endl;c2.output(0); c2.output(1); c2.output(2);c2.output(3);return 0;}
学习心得:
写这个程序出现了一个很小的问题一直没发现,出现在的求最大公约数的函数上,因为返回值错误导致一运行到那里程序就会崩,最后通过调试解决了错误。
0 0
- 第6周-项目1-分数类的雏形
- 第6周项目1—分数类的雏形
- 第6周项目1:分数类的雏形
- 第6周项目1 分数类的雏形
- 第6周项目1-分数类的雏形
- 第6周项目1-分数类的雏形
- 第6周项目1-分数类的雏形(4)
- 第6周项目1-分数类的雏形(1)
- 第6周项目1-分数类的雏形(2)
- 第6周项目1-分数类的雏形(3)
- 第4周项目2-分数类的雏形
- 第4周项目2--分数类的雏形
- 2015-第4周项目2-分数类的雏形
- 第4周项目2分数类的雏形
- 第4周项目2-分数类的雏形
- 第4周项目2-分数类的雏形
- 第4周项目2-分数类的雏形
- 第4周项目2分数类的雏形
- 【bzoj3119】【book】【贪心】
- ★ZZULIoj--1870(枚举好题)
- 事务总结
- 第六周 项目4-静态成员应用
- UVa1585 Score
- 第6周项目1-分数类的雏形(4)
- Intellij IDEA15:常用快捷键
- maven项目 启动报错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- Qt中实现无边框的窗体
- 软件开发考虑几点
- 冒泡法排序
- C++作业3/2
- html5-canvas
- linux安装memcache文档