分数计算器设计Word格式.docx
- 文档编号:8317776
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:12
- 大小:21.77KB
分数计算器设计Word格式.docx
《分数计算器设计Word格式.docx》由会员分享,可在线阅读,更多相关《分数计算器设计Word格式.docx(12页珍藏版)》请在冰点文库上搜索。
头文件
声明整数类声明派生类
主函数
成员函数定义
定义类的对象定义成员函数
(2)分析系统中的各个实体及它们之间的关系;
M主函数j分数计算器成员函数定义
II
*T
main.exe
(3)根据问题描述,设计系统的类层次;
(4)完成类层次中各个类的描述;
(5)完成类中各个成员函数的定义;
6)完成系统的应用模块;
(7)功能调试;
(8)完成系统总结报告。
源代码:
//分数计算器h.h:
#include<
iostream.h>
classInteger//整数类
{
protected:
intfz;
intfm;
public:
Integer(inta=0,intb=1):
fz(a),fm(b){}
~Integer(){}
voiddisplay();
};
算和输入输出
Fraction(inta=0,intb=1):
Integer(a,b){}
friendistream&
operator>
>
(istream&
Fraction&
);
//
重载输入流
friendostream&
operator<
<
(ostream&
重载输出流
Fractionoperator+(Fraction&
c);
重载+运算符(分数与分数)
Fractionoperator+(intn);
//
重载+
运算符(整数与分数)
Fractionoperator-(Fraction&
重载-运算符(分数与分数)
Fractionoperator-(intn);
重载-
friendFractionoperator-(intn,Fraction&
Fractionoperator*(Fraction&
重载*运算符(分数与分数)
Fractionoperator/(Fraction&
载/运算符(分数与分数)
Fractionoperator/(intn);
//重载/运算符(整数与分数)
friendFractionoperator/(intn,Fraction&
Fractionpredigest();
//约分函数
//实现函数(分数计算器设计)
#include"
分数计算器h.h"
voidInteger:
:
display()
cout<
endl;
"
分数计
//重
算器
"
endl<
请选择功能
1
2
3
0
分数与整数的四则运算。
整数与分数的四则运算。
分数与分数的四则运算。
输入0退出。
}
FractionFraction:
predigest()//定义约分函数
intn,d,t,sign=1;
Fractiontemp;
if(fz<
0&
&
fm<
0)
fz=-fz;
fm=-fm;
if(fz>
sign=-1;
fm>
n=fz;
d=fm;
intr;
if(n<
d)//辗转相除,求分子n与分母d的最大公约数
{t=n;
n=d;
d=t;
}r=n%d;
while(r!
=0)
d=r;
//d为最大公约数r=n%d;
temp.fz=sign*(fz/d);
temp.fm=fm/d;
returntemp;
operator+(Fraction&
c)//重载两个分数的加法运算符
temp.fz=fz*c.fm+fm*c.fz;
temp.fm=fm*c.fm;
operator+(intn)//重载分数和整数的加法运算{
temp.fz=fm*n+fz;
temp.fm=fm;
Fractionoperator-(intn,Fraction&
c)
temp.fz=c.fm*n-c.fz;
temp.fm=c.fm;
operator-(intn)
//重载分数减整数的减法运算符
temp.fz=fz-fm*n;
operator-(Fraction&
c)//重载两个分数的减法运算符
Fractiontemp;
temp.fz=fz*c.fm-fm*c.fz;
temp.fm=fm*c.fm;
operator*(Fraction&
c)//重载两个分数的乘法运算符
temp.fz=fz*c.fz;
operator*(intn)//重载分数与整数的乘法运算符
temp.fz=fz*n;
operator/(Fraction&
c)//重载两个分数的除法运算符{
temp.fz=fz*c.fm;
temp.fm=fm*c.fz;
//重载分数除以整数的除法运算
operator/(intn)
符
temp.fz=fz;
temp.fm=fm*n;
Fractionoperator/(intn,Fraction&
temp.fz=n*c.fm;
temp.fm=c.fz;
ostream&
output,Fraction&
t)
//重载输出运算符,输出
分数
inta,b,c;
a=t.fz;
b=t.fm;
if(a==0||b==0)//cout<
0"
;
if(b==1)//
当分子,或者分母为0时,输出0
当分母为1时,输出分子
a;
if(a>
b&
b!
=1)
//判断分数为假分数
c=a/b;
a=a%b;
c;
if(a!
coutvv"
又"
vvavv'
/'
vvb;
if(a<
0&
-a>
=1)//当分数为负时,判断为假分数
c=-a/b;
a=-a%b;
c=-c;
'
='
cout«
vvbvvendl;
if(t.fz>
t.fz<
t.fm&
t.fm!
=0&
t.fm!
//判断为真分数
output<
t.fm;
if(t.fz<
-t.fz<
=0&
("
t.fm<
)"
returnoutput;
istream&
input,Fraction&
t)//重载输入运算符,输入分数
{inta,c;
charb;
input>
a>
b>
if(b=='
&
c!
=0)
t.fz=a;
t.fm=c;
else
错误!
!
输入格式错误或分母为0!
请退出重新输入!
returninput;
//main函数
intmain()
Integerdis;
Fractiona,b,result,real;
intm,z;
charc;
//数据类型
dis.display();
while(m!
请输入:
(0-3):
cin>
m;
请输入一个分数:
输入一个正整数:
z;
if(c=='
+'
)
result=a+z;
-'
result=a-z;
*'
result=a*z;
result=a/z;
real=result.predigest();
运算式规范为
()<
c<
z<
real<
a<
a.predigest
if(m==2)//
整数与分数的运算
请输入一个正整数
请输入运算符:
请输入一个分数
b;
result=b+z;
result=z-b;
result=b*z;
result=z/b;
运算式规范为:
b<
b.predigest()<
if(m==3)//分数与分数的运算
请输入一个分数:
result=a+b;
result=a-b;
result=a*b;
result=a/b;
b.predigest
运算式规范为:
return0;
总结报告:
这是我的第一次课程设计,刚开始拿到手感觉一头雾水,不知道到底是从哪里开头去设计一个课题,虽然提供了解决方案让我可以照着步骤去做,但是没有老师的辅导,下手真不容易。
不过,在理清了程序设计的一条条思路后,画了设计层次图,然后一步一步深入,把程序完成了。
其中也遇到很多麻烦,在网上搜索解决了问题。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分数 计算器 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)