C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,
2012-03-17 17:28
1626 查看
#include <iostream> using namespace std; 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 }; int main () { CFraction CF; int style,x; CF.input(); cout<<"请输入要放大的倍数:"<<endl; cin>>x; CF.amplify(x); cout<<"选择输出形式(以8/6为例,style为0时,输出8/6;style为1时,输出4/3;style为2时,输出1(1/3),表示一又三分之一;不给出参数和非1、2,认为是方式0)"<<endl; cin>>style; CF.output(style); CF.Set(); return 0; } CFraction::CFraction(int nu,int de) { nume=nu; deno=de; } void CFraction::Set(int nu,int de) { nume=nu; deno=de; } void CFraction:: input() { int x,y; char ch1; while(1) { cout<<"请输入分数(格式为 */*):"<<endl; cin>>x>>ch1>>y; if (ch1!='/') cout<<"输入错误,请重新输入"<<endl; else break; } nume=x; deno=y; } void CFraction::Simplify() { int m,n; n=nume,m=deno; for(int i=2;n>=i;i++) { if(n%i==0 && m%i==0) { n/=i; m/=i; i--; } } cout<<n<<"/"<<m<<endl; } void CFraction::amplify(int x) { int m,n; n=nume,m=deno; for(int i=2;n>=i;i++) { if(n%i==0 && m%i==0) { n/=i; m/=i; i--; } } n=n*x; cout<<n<<"/"<<m<<endl; } void CFraction::output(int style) { int n,m,x; n=nume,m=deno; switch(style) { case 1: { for(int i=2;n>=i;i++) { if(n%i==0 && m%i==0) { n/=i; m/=i; i--; } }cout<<n<<"/"<<m<<endl; };break; case 2: { cout<<"约分后结果为:"; for(int i=2;n>=i;i++) { if(n%i==0 && m%i==0) { n/=i; m/=i; i--; } }; if(n<=m) { cout<<n<<"/"<<m<<endl; } else if (n%m==0) { x=n/m; n=n%m; cout<<x<<endl; } else { x=n/m; n=n%m; cout<<x<<'('<<n<<'/'<<m<<')'<<endl; } };break; default:cout<<n<<"/"<<m<<endl;break; } }
相关文章推荐
- C++第5周任务【任务2】本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,二则也为第10章做运算符重载等积累些感性认识。
- 《第五周实验报告2-1》---设计一个简单的分数类,完成对分数的几个运算
- C++第四周中提供了多种基本的数据类型(任务四)定义一个工资类
- 第十五周实验--任务2--设计分数类,开发一个窗口式程序,可以完成分数的四则运算。
- 第十五周C++【任务二】设计分数类,开发一个窗口式程序,可以完成分数的四则运算
- 第七周上机任务三--实现一个复数类--通过模板类的技术手段,设计Complex,使实部和虚部的类型为定义对象时用的实际类型
- 用类名做方法的返回值类型 在学习Java的初始阶段,很多同学使用基本数据类型定义变量和引用类型定义变量以及使用类名做方法的返回值类型常常不知所以。今天我以自己的解读方式和个人的理解作一个简单的解释,和
- 定义一个不受计算机字长限制的整数类INT,要求INT与INT以及INT与C++基本数据类型int之间能进行+、-、×、÷和=运算,并且能通过cout输出INT类型的值。(持续添加)
- java并发编程--Executor框架(一) 摘要: Eexecutor作为灵活且强大的异步执行框架,其支持多种不同类型的任务执行策略,提供了一种标准的方法将任务的提交过程和执行过程
- 继承与合成基本概念 继承:可以基于已经存在的类构造一个新类。继承已经存在的类就可以复用这些类的方法和域。在此基础上,可以添加新的方法和域,从而扩充了类的功能。 合成:在新类里创建原有的对象称为合成。
- c++设计一个分数类。要求:1.分类包含的分数运算有:连个分数的加、减、乘、除运算。
- 《第五周任务二》设计分数类,完成对分数的运算
- c++primer第二章“c++定义了几种基本类型,还提供了可用于自定义数据类型的机制,此外,我们还能修改已有的类型以形成复合类型”
- 一个基于jQuery延迟对象Deferred的异步任务处理方法
- c++第八周【任务3】实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除(运算后再化简)、求反、比较(6种关系)的运算。
- 【java学习记录】3.采用面向对象的方法设计一个能对复数(Complex)进行加、减、乘法的简单运算的程序
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- 猎豹MFC--拦截消息SetWindowsLong CallWindowsProc控件不能满足我们的需求时 增加修改这些功能
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- 第八周实验报告任务3 实现分数类中的运算符重载,在分数类中可以完成分数的加减乘除,求反,比较6种关系的运算。