分数计算器Word文档下载推荐.docx
- 文档编号:20584000
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:19
- 大小:321.52KB
分数计算器Word文档下载推荐.docx
《分数计算器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《分数计算器Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
friendFractionoperator-(intn,Fraction&
Fractionoperator*(Fraction&
//声明重载两个分数的乘法运算符
Fractionoperator*(intn);
//声明重载分数与整数的乘法运算符
Fractionoperator/(Fraction&
//声明重载两个分数的除法运算符
Fractionoperator/(intn);
//声明重载分数除以整数的除法运算符
friendFractionoperator/(intn,Fraction&
Fractionpredigest();
//声明约分函数
intgetscore(intscore);
private:
intnumerator;
//分子
intdenominator;
//分母
};
实现函数
#include"
yl1.h"
//加入类的头文件
FractionFraction:
:
predigest()//约分函数//
intn,d,t,sign=1;
//sign为分数符号标记
Fractiontemp;
if(numerator<
0&
&
denominator<
0)//当分子、分母同为负时,分数符号标记sign=1
numerator=-numerator;
denominator=-denominator;
if(numerator>
0)//当分子为正,分母为负时,分数符号标记sign=-1
sign=-1;
denominator>
0)//当分子为负,分母为正时,分数符号标记sign=-1
n=numerator;
d=denominator;
intr;
if(n<
d)//辗转相除法求分子n与分母d最大公约数
{t=n;
n=d;
d=t;
}
r=n%d;
while(r!
=0)
{
d=r;
//d为最大公约数
temp.numerator=sign*(numerator/d);
temp.denominator=denominator/d;
returntemp;
operator+(Fraction&
c)//重载两个分数的加法运算符
temp.numerator=numerator*c.denominator+denominator*c.numerator;
temp.denominator=denominator*c.denominator;
returntemp;
}
operator+(intn)//重载分数和整数的加法运算符
temp.numerator=denominator*n+numerator;
temp.denominator=denominator;
Fractionoperator-(intn,Fraction&
c)
temp.numerator=c.denominator*n-c.numerator;
temp.denominator=c.denominator;
operator-(intn)//重载分数减整数的减法运算符
temp.numerator=numerator-denominator*n;
operator-(Fraction&
c)//重载两个分数的减法运算符
Fractiontemp;
temp.numerator=numerator*c.denominator-denominator*c.numerator;
temp.denominator=denominator*c.denominator;
operator*(Fraction&
c)//重载两个分数的乘法运算符
temp.numerator=numerator*c.numerator;
operator*(intn)//重载分数与整数的乘法运算符
temp.numerator=numerator*n;
operator/(Fraction&
c)//重载两个分数的除法运算符
temp.numerator=numerator*c.denominator;
temp.denominator=denominator*c.numerator;
operator/(intn)//重载分数除以整数的除法运算符
temp.numerator=numerator;
temp.denominator=denominator*n;
Fractionoperator/(intn,Fraction&
c)
temp.numerator=n*c.denominator;
temp.denominator=c.numerator;
ostream&
t)//重载输出运算符,输出分数
inta,b,c;
a=t.numerator;
b=t.denominator;
if(a==0||b==0)//当分子,或者分母为0时,输出0
cout<
"
0"
;
if(b==1)//当分母为1时,输出分子
a;
if(a>
b&
b!
=1)//判断分数为假分数
c=a/b;
a=a%b;
c;
if(a!
=0)
cout<
又"
a<
'
/'
b;
if(a<
-a>
=1)//当分数为负时,判断为假分数
c=-a/b;
a=-a%b;
c=-c;
='
b<
endl;
if(t.numerator>
t.numerator<
t.denominator&
t.denominator!
=0&
=1)
//判断为真分数
s<
t.denominator;
if(t.numerator<
-t.numerator<
("
t.denominator<
)"
returns;
istream&
t)//重载输入运算符,输入分数
{inta,c;
charb;
s>
a>
b>
if(b=='
)
t.numerator=a;
t.denominator=c;
else
输入格式错误!
intFraction:
getscore(intscore)
inti,m,z,time=0;
Fractiona,temp;
for(i=0;
i<
3;
i++)
cout<
请输入选择数据类型:
1.整数2.分数"
endl;
cin>
m;
if(m==1)
请输入结果:
"
cin>
z;
if(z==0&
numerator==0||z==0&
denominator==0)
{
恭喜你答对了!
time++;
score=score+10*time;
成绩是;
score<
break;
}
else
if(z==1&
numerator==1&
denominator==1)
{
cout<
time++;
score=score+10*time;
成绩是:
break;
}
else
if(denominator==1&
z==numerator)
{
cout<
time++;
score=score+10*time;
break;
}
else
结果错误,请重新输入!
score=score+time*10;
成绩是:
if(i==2)
{
cout<
正确结果为:
temp<
}
if(m==2)
if(numerator==a.numerator&
denominator==a.denominator)
score=score+time*10;
if(i==2)
returnscore;
主函数
iomanip.h>
stdlib.h>
//加入类的头文件
voidmain()//主函数
Fractiona,b,result,real;
intm,z,score=0,time=0;
charc;
//数据类型
setw(60)<
------------------分数计算器-----------------"
endl<
setw(50)<
1分数与整数的四则运算。
2整数与分数的四则运算。
3分数与分数的四则运算。
setw(39)<
4输入0退出。
while(m!
请选择:
(0-3)"
if(m==1)//分数与整数的运算
setw(42)<
请输入一个分数:
setw(40)<
请输入运算符:
输入一个整数:
if(c=='
+'
result=a+z;
-'
result=a-z;
*'
result=a*z;
result=a/z;
real=result.predigest();
score=real.getscore(score);
time++;
运算式规范为:
c<
z<
a.predigest()<
real<
if(m==2)//整数与分数的运算
请输入一个整数:
setw(38)<
请输入运算符:
请输入一个分数:
result=b+z;
result=z-b;
result=b*z;
result=z/b;
b.predigest()<
if(m==3)//分数与分数的运算
result=a+b;
result=a-b;
result=a*b;
result=a/b;
最后的成绩是:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分数 计算器