1、c实现分数重载实现分数加减乘除重载函数运算符重载昆 明 理 工 大 学 理 学 院信息与计算科学专业 操作性实验报告年级: 2010级 姓名: 学号: 指导教师: 实验课程名称: 开课实验室: 理学院机房 实验成绩:学风(5)观察能力(15)操作能力(30)调试能力(50)其它总分实验内容:1实验/作业题目:写一个分数的程序,应用重载函数,使运算符重载,并实现分数的加减乘除。对1100分内各个分数段给出ABCD的评价2实验/作业课时:2个课时3实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能): 先写程序,再写流程图。#includeusing namespace std;cl
2、ass fraction private: int above; /分子 int below; /分母 void reduction(); /约分 fraction makeCommond(fraction); /通分 public: fraction(int a=0,int b=1) /构造函数 above=a;below=b; fraction operator+(fraction); /两分数相加 fraction operator-(fraction); /两分数相减 fraction operator*(fraction); /两分数相乘 fraction operator/(fra
3、ction); /两分数相除 void display(); /显示分数 void input(); /输入分数;/*分数的约分*/ void fraction:reduction() int i,comdiv,small,max; if(above1;i-) if(small%i=0 &max%i=0 ) break; comdiv=i; /最大公约数 if(i!=0) above/=i; below/=i; /*分数的通分*/ fraction fraction:makeCommond(fraction frac) int b1=below,b2=frac.below, m,s; if(b
4、1b2) m=b1%b2; s=b2; else m=b2%b1; s=b1; while(m0) int res=s%m; s=m,m=res; int small=(b1*b2)/s; above=above*(small/below); frac.above=frac.above*(small/frac.below); below=small; frac.below=small; return frac; /*分数的相加*/ fraction fraction:operator+(fraction fr) fraction f3; f3.above=above*fr.below+fr.a
5、bove*below; f3.below=below*fr.below; f3.reduction(); return f3; /*分数的相减*/ fraction fraction:operator-(fraction fr) fraction f3; f3.above=above*fr.below-fr.above*below; f3.below=below*fr.below; f3.reduction(); return f3; /*分数的相乘*/ fraction fraction:operator*(fraction fr) fraction f3; f3.above=above*f
6、r.above; f3.below=below*fr.below; f3.reduction(); return f3; /*分数的相除*/ fraction fraction:operator/(fraction fr) fraction f3; f3.above=above*fr.below; f3.below=below*fr.above; f3.reduction(); return f3; /*分数的输出*/ void fraction:display() coutaboveendl-endlbelowendlendlendl; /*分数的输入*/ void fraction:inp
7、ut() coutabove; while(true) coutbelow; if(below=0) cout分母不能为零!; else break; int main() fraction f1(4,20),f2(80,400); f1.input(); f2.input(); f1.display(); f2.display(); cout分数加法endl; f1.operator+(f2).display(); cout分数减法endl; f1.operator-(f2).display(); cout分数乘法endl; f1.operator*(f2).display(); cout分数除法endl; f1.operator/(f2).display(); return 0;4算法描述、流流程图或程序图:5实验数据和实验结果(用屏幕图形表示,可另加附页):6心得体会:分数的加、减、乘、除,用重载函数重载运算符,使简便,分数的 加、减、乘、除,要构造函数,还要实现约分、通分,还是多看、多练、 多写、多想。评分标准 学 风-报告格式规范,文字清晰 观察能力-正确描述和理解需要操作的问题操作能力-正确输入程序,熟悉编程环境 调试能力-熟练使用调试功能解决程序错误
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2