c实现分数重载实现分数加减乘除重载函数运算符重载.docx
- 文档编号:12806878
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:9
- 大小:79.99KB
c实现分数重载实现分数加减乘除重载函数运算符重载.docx
《c实现分数重载实现分数加减乘除重载函数运算符重载.docx》由会员分享,可在线阅读,更多相关《c实现分数重载实现分数加减乘除重载函数运算符重载.docx(9页珍藏版)》请在冰点文库上搜索。
c实现分数重载实现分数加减乘除重载函数运算符重载
昆明理工大学理学院
信息与计算科学专业操作性实验报告
年级:
2010级姓名:
学号:
指导教师:
实验课程名称:
开课实验室:
理学院机房
实验成绩:
学风(5)
观察能力(15)
操作能力(30)
调试能力(50)
其它
总分
实验内容:
1.实验/作业题目:
写一个分数的程序,应用重载函数,使运算符重载,
并实现分数的加减乘除。
对1~100分内各个分数段给出ABCD的评价
2.实验/作业课时:
2个课时
3.实验过程(包括实验环境、实验内容的描述、完成实验要求的知识或技能):
先写程序,再写流程图。
#include
usingnamespacestd;
classfraction
{
private:
intabove;//分子
intbelow;//分母
voidreduction();//约分
fractionmakeCommond(fraction);//通分
public:
fraction(inta=0,intb=1)
{//构造函数
above=a;below=b;
}
fractionoperator+(fraction);//两分数相加
fractionoperator-(fraction);//两分数相减
fractionoperator*(fraction);//两分数相乘
fractionoperator/(fraction);//两分数相除
voiddisplay();//显示分数
voidinput();//输入分数
};
//***********分数的约分*********//
voidfraction:
:
reduction()
{
inti,comdiv,small,max;
if(above { small=above; max=below; } else { small=below; max=above; } for(i=small;i>1;i--) { if(small%i==0&max%i==0) break; } comdiv=i;//最大公约数 if(i! =0) { above/=i; below/=i; } } //*************分数的通分*************// fractionfraction: : makeCommond(fractionfrac) { intb1=below,b2=frac.below,m,s; if(b1>b2) { m=b1%b2; s=b2; } else { m=b2%b1; s=b1; } while(m>0) { intres=s%m; s=m,m=res; } intsmall=(b1*b2)/s; above=above*(small/below); frac.above=frac.above*(small/frac.below); below=small; frac.below=small; returnfrac; } //***************分数的相加*************// fractionfraction: : operator+(fractionfr) { fractionf3; f3.above=above*fr.below+fr.above*below; f3.below=below*fr.below; f3.reduction(); returnf3; } //*********************分数的相减***************// fractionfraction: : operator-(fractionfr) { fractionf3; f3.above=above*fr.below-fr.above*below; f3.below=below*fr.below; f3.reduction(); returnf3; } //*******************分数的相乘****************// fractionfraction: : operator*(fractionfr) { fractionf3; f3.above=above*fr.above; f3.below=below*fr.below; f3.reduction(); returnf3; } //******************分数的相除***********// fractionfraction: : operator/(fractionfr) { fractionf3; f3.above=above*fr.below; f3.below=below*fr.above; f3.reduction(); returnf3; } //*********************分数的输出*************// voidfraction: : display() { cout< } //*******************分数的输入****************// voidfraction: : input() { cout<<"请输入分数的分子: "; cin>>above; while(true) { cout<<"请输入分数的分母(不等于零): "; cin>>below; if(below==0) { cout<<"分母不能为零! "; } else break; }; } intmain() { fractionf1(4,20),f2(80,400); f1.input(); f2.input(); f1.display(); f2.display(); cout<<"分数加法"< f1.operator+(f2).display(); cout<<"分数减法"< f1.operator-(f2).display(); cout<<"分数乘法"< f1.operator*(f2).display(); cout<<"分数除法"< f1.operator/(f2).display(); return0; } 4.算法描述、流流程图或程序图: 5.实验数据和实验结果(用屏幕图形表示,可另加附页): 6.心得体会: 分数的加、减、乘、除,用重载函数重载运算符,使简便,分数的 加、减、乘、除,要构造函数,还要实现约分、通分,还是多看、多练、 多写、多想。 评分标准学风--报告格式规范,文字清晰观察能力--正确描述和理解需要操作的问题 操作能力--正确输入程序,熟悉编程环境调试能力--熟练使用调试功能解决程序错误
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实现 分数 重载 加减乘除 函数 运算