




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南华大学 实验报告1、功能要求(1)定义整数类和分数类。其中,包括构造函数、析构函数、显示函数等。(2)输入/输出:对流提取和流插入运算符进行重载。(3)计算功能:可进行分数的加、减、乘和除法运算。(4)化简功能:将分数化简为最简分数。(5)异常处理功能:分数中分母不能为零。(6)菜单功能:每种功能的操作都是在菜单中进行相应选择。2.解决问题步骤a.首先定义整数类b.利用定义好的整数类派生出分数类c.在类中对需要使用的运算符进行重载(此处使用友元函数)d.设计实验算法 完成代码编写e.使用main函数对类进行调试类图:Fraction-x:int-y:int+Fraction():int+Fraction():void+ostream:Fraction+istream:FractionInteger-x:int+Integer():int+Integer():void+Show():int流程图:输出S结束是否是否是否是S=a*d/b*cS=a*c/b*dS=(a*d-c*b)/b*d S=(a*d+c*b)/b*d 输入a/b # c/d# 是 /# 是 *# 是 -# 是 +开始a.分数加 减 乘 除法运算:源程序:#include #includeusing namespace std;class Integerpublic: Integer(int a=0):x(a) Integer() int Show()return x;private: int x;class Fraction:public Integerpublic: Fraction(int a=1,int b=1):x(a),y(b) Fraction() friend ostream & operator (ostream &out,const Fraction &r); /定义分数类 (istream &in, Fraction &r); /定义分数类运算符重载函数并将其声明为类的友元函数 friend Fraction operator + (const Fraction &r1, const Fraction &r2); /重载加法运算符 friend Fraction operator - (const Fraction &r1, const Fraction &r2); /重载减法运算符 friend Fraction operator * (const Fraction &r1, const Fraction &r2);/重载乘法运算符 friend Fraction operator / (const Fraction &r1, const Fraction &r2);/重载除法运算符 void Simplify( Fraction &r); void Emergency(Fraction &r); void Show()coutx/ (istream &in, Fraction &r) cinr.xr.y; if(r.y=0) cout分母不能为零,请重新输入分母!r.y; return in;ostream & operator (ostream &out,const Fraction &r) coutr.x/r.y; return out;Fraction operator+ (const Fraction &r1,const Fraction &r2) /+运算符重载函数的实现 int m,n; m=r1.x*r2.y+r2.x*r1.y; n=r1.y*r2.y; Fraction f(m,n); return f;Fraction operator- (const Fraction &r1,const Fraction &r2) int m,n; m=r1.x*r2.y-r2.x*r1.y; n=r1.y*r2.y; Fraction f(m,n); return f; Fraction operator*(const Fraction &r1,const Fraction &r2) int m,n; m=r1.x*r2.x; n=r1.y*r2.y; Fraction f(m,n); return f; Fraction operator/(const Fraction &r1,const Fraction &r2) int m,n; m=r1.x*r2.y; n=r1.y*r2.x; Fraction f(m,n); return f; void Fraction:Simplify( Fraction &r) int m=r.x, n=r.y;for(int i=2;in;i+) if(n%i=0&m%i=0) m=m/i;n=n/i; r.x=m; r.y=n; coutrendl; void Fraction:Emergency( Fraction &r)if(r.y=0) cout分母不能为零,请重新输入分母!r,y;int m=0,n;int main() do/case1: Integer i; Fraction f1,f2,f3,f4,f5; coutendl; cout 欢迎使用分数计算器! endl; cout(1)定义整数类和分数类 endl; cout(2)输入/输出 endl; cout(3)计算功能 endl; cout(4)化简功能 endl; cout(5)异常处理功能 endl; cout(6)退出功能 endl; cout请输入相应的序号以选择菜单功能,如1m;if(1!=m&2!=m&3!=m&4!=m&5!=m) cout输入错误,请重新输入endl;if(1=m)string a,b; cout请输入要定义的类、类名,只提供整数类(Integer)和分数类(Fraction) ab; if(a=Integer) cout请输入整数类的初始化p; coutIntegerends b(p)endl; else if(a=Fraction) cout请输入分数类的初始化pq; coutFractionends b(p,q)endl; else if(a!=Integer&a!=Fraction) cout输入错误,请重新输入endl; else if(2=m) cout请输入两个数据f1f2; coutf1endsf2endl; else if(3=m) cout请输入相应的运算符号+ _ * / 以选择计算功能,如+op; if(op!=+&op!=-&op!=*&op!=/) cinop; cout输入错误,请重新输入endl; if(op=+) cout请输入需要计算的两个数据f1f2; coutf1+f2 endl;break; if(op=-) cout请输入需要计算的两个数据f1f2; coutf1-f2endl;break; if(op=*) cout请输入需要计算的两个数据f1f2; coutf1*f2 endl;break; if(op=/) cout请输入需要计算的两个数据f1f2; coutf1/f2 endl;break; while(op!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东广告策划自考试题及答案
- 篮协培训考试题及答案
- 木刻水印雕刻版员数字化技能考核试卷及答案
- 课件无法打开的原因
- 课件旋转平移路径
- 真空制盐工协同作业考核试卷及答案
- 压电石英片烧银焊线工5S管理考核试卷及答案
- 基础强化自考专业(行政管理)试题【历年真题】附答案
- 钢渣处理工质量追溯知识考核试卷及答案
- 2025年康复医学科患者康复方案制定考核试题答案及解析
- 《江苏省工程勘察设计收费导则》2024
- T-CALC 007-2025 重症监护病房成人患者人文关怀规范
- 2025年全国禁毒知识竞赛题库(共100题附答案)
- 储能站施工组织设计施工技术方案(技术标)
- ktv消防安全培训制度
- GB/T 44923-2024成年人三维头部模型
- 公司固定资产管理办法与实施细则
- 傣医学中的月疗褥疗法治疗
- 小学生-竞选纪律委员
- 心内科心衰一病一品护理成果汇报
- 孕产妇心理危机干预应急预案
评论
0/150
提交评论