c++第二次实验--类和对象1
来源:互联网 发布:淘宝的卖家中心不见了 编辑:程序博客网 时间:2024/05/16 05:56
分数类
一、问题及代码:
/* * 文件名称:Ex1-1.cpp * 完成日期:2016 年 3 月 31 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:* C++中提供了多种基本的数据类型。* 实际上,这些远不能满足我们的需求,如分数。我们可以自定义类支持这些数据类型。* 输入描述:输入一个分数;* 问题描述:本任务将设计一个简单的分数类,完成对分数的几个运算。* 一则巩固基于对象编程的方法,* 二则也为运算符重载等积累些感性认识。* 程序输出:略* 问题分析:略* 算法设计:化简分数时需要求分子分母最大公约数*/ #include<iostream>using namespace std;class CFraction{private: int nume; // 分子 int deno; // 分母public: CFraction(int nu,int de); //构造函数,初始化用 int gdc(); //计算最大公约数 void setc(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=0);//输出:以8/6为例,style为0时,原样输出8/6;//style为1时,输出化简后形式4/3;//style为2时,输出1(1/3)形式,表示一又三分之一;//style为3时,用小数形式输出,如1.3333;//默认方式0};CFraction::CFraction(int nu,int de){ nume=nu; deno=de;}void CFraction::setc(int nu,int de){ nume=nu; deno=de;}void CFraction::input(){ cout<<"输入分数(m/n):"; char a; cin>>nume>>a>>deno;}void CFraction::simplify(){ int a; a=gdc(); nume/=a;deno/=a;}int CFraction::gdc(){ int a=nume,b=deno,g=nume%deno; while(g) { a=b; b=g; g=a%b; } return b;}void CFraction::amplify(int n){ nume*=n;}void CFraction::output(int style){ int b;b=gdc(); switch (style) { case 0:cout<<"原样:"<<nume<<"/"<<deno<<endl;break; case 1:cout<<"化简形式:"<<nume/b<<"/"<<deno/b<<endl;break; case 2:cout<<"带分数形式:"<<nume/deno<<"("<<nume%deno/b<<"/"<<deno/b<<")"<<endl;break; case 3:double s=(double)nume/deno;cout<<"小数形式:"<<s<<endl;break; }}int main(){ CFraction c1(0,1),c2(8,6); cout<<"关于c1:"<<endl; c1.output(); cout<<"改变c1:"<<endl; c1.setc(2,7); c1.output(); cout<<"输入c1:"<<endl; c1.input(); c1.output(); cout<<"关于c2:"<<endl; c2.output(); c2.output(1); c2.output(2); c2.output(3); c2.output(); cout<<"将c2化简:"<<endl; c2.simplify(); c2.output(); cout<<"将c2放大5倍:"<<endl; c2.amplify(5); c2.output(); c2.output(1);}
二、运行结果:
三、心得体会:
需要注意的细节有很多,比如输出化简形式时不能修改类里的分子和分母。整体算法不难,但却是比较长的一串代码,不免让人看的眼花,不过主函数确实是简单许多。
四、知识点总结:
基本学会对类的一些操作,感觉类就像是结构体和函数的一个结合一样。
0 1
- c++第二次实验--类和对象1
- C++第二次实验-类和对象
- 面向对象第二次实验
- c++--补第二次实验
- C++STL 第二次实验
- Windows第二次实验——C++复习(二)类和对象
- 第二次C程序设计实验报告
- 第二次上机实验-1
- C++第二次实验-1
- 第二次上级实验-1
- c++第二次实验-1
- c++第二次实验-1
- 计算机图形学第二次实验E2-1-C语言
- C++第二次实验1-1
- c++第二次实验1-2
- C++第二次上机实验1
- c++第二次实验(1)
- C语言第二次上级指导实验报告
- 针对《SVM八股简介》的总结
- ArrayList和HashSet对的比较及HasCode分析
- Swift系统自带二维码的扫描使用
- 周线金叉
- 1017-R
- c++第二次实验--类和对象1
- redhat下qt的安装
- swift 数组转字符串(joinWithSeparator)
- 活动选择
- maven错误事例之一
- 现代控制理论课件分享及课后思考题(初稿待完善)
- 【模拟】Vijos P1771 瑞士轮 (NOIP2011普及组第三题)
- 输出随机认证码图片
- Application加载ViewController过程探究