高级语言程序设计实训报告.doc_第1页
高级语言程序设计实训报告.doc_第2页
高级语言程序设计实训报告.doc_第3页
高级语言程序设计实训报告.doc_第4页
高级语言程序设计实训报告.doc_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论