c++第五周项目二分数类
2014-03-26 14:13
302 查看
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:纪丽娜 * 完成日期:2014 年 3 月 26 日 * 版 本 号:v1.0 * 问题描述:本任务将设计一个简单的分数类,完成对分数的几个运算。 */ #include <iostream> using namespace std; class CFraction { private: int nume; // 分子 int deno; // 分母 public: CFraction(int nu=0,int de=1):nume(nu),deno(de){} //构造函数,初始化用 void set(int nu,int de); //置值,改变值时用 void input(); //按照"nu/de"的格式,如"5/2"的形式输入 void simplify(); //化简(使分子分母没有公因子) void amplify(int n); //放大n倍,如2/3放大5倍为10/3 void output(int style); /*输出:以8/6为例,style为0时,原样输出8/6; //style为1时,输出化简后形式4/3; //style为2时,输出1(1/3)形式,表示一又三分之一; //style为3时,用小数形式输出,如1.3333; 默认方式0*/ }; void CFraction::set(int nu,int de) //置值,改变值时用 { nume=nu; deno=de; } void CFraction::amplify(int n) //放大n倍,如2/3放大5倍为10/3 { set(nume*n,deno); output(0); } void CFraction::output(int style) //输出 { int c; double k; switch(style) { case 0: cout<<"该分数为"<<nume<<"/"<<deno<<endl; break; case 1: simplify(); cout<<"该分数化简后为"<<nume<<"/"<<deno<<endl; break; case 2: cout<<"该分子的1(1/3)的形式为:"; simplify(); c=nume/deno; cout<<c<<"("<<nume-c*deno<<"/"<<deno<<")"<<endl; break; case 3: cout<<"该分子的小数形式为:"; double a=nume,b=deno; k=a/b; cout<<k<<endl; break; } } void CFraction::simplify() //化简(使分子分母没有公因子) { int i,min; nume>=deno?min=deno:min=nume; for(i=min;i>0;i--) { if((deno%i==0)&&(nume%i==0)) { deno/=i; nume/=i; } } } void CFraction::input() //按照"nu/de"的格式,如"5/2"的形式输入 { char g; cin>>nume>>g>>deno; if(g!='/') { cout<<"格式错误,请重新输入!"<<endl; input(); } } int main() { int n; CFraction c1(8,6); c1.output(0); c1.output(1); c1.output(2); c1.output(3); cout<<"请任意输入一个分数:"; CFraction c2; c2.input(); cout<<"请输入要放大的倍数:"; cin>>n; c2.amplify(n); return 0; }
一开始都懵了,不知道这几个函数是干什么的,嗨,呵呵。。
相关文章推荐
- c++第五周项目一三角形类扩展
- Leetcode_first-missing-positive (updated c++ and python version)
- c++调用c函数
- c++第五周项目一三角形类2
- LeetCode Interleaving String
- C++第5周项目1 三角形类1
- c++调用c函数
- C语言条件编译及编译预处理阶段
- 漫谈C语言结构体
- 基于c++的builder模式初探。
- C++类型转换总结
- C++11 Concurrency Tutorial – Part 2 : Protect shared data
- C++指针、引用知多少?
- 异常安全的赋值运算符重载函数 C++ String实现
- C++ tab键实现自动补全输入功能
- C++ tab键实现自动补全输入功能
- [C++] 井字棋游戏源码
- 数字雨C++代码(转)
- 由c到C++
- C++11 range-based for loops