c++关于有理数类的课程设计Word格式文档下载.docx
- 文档编号:6498643
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:11
- 大小:18.05KB
c++关于有理数类的课程设计Word格式文档下载.docx
《c++关于有理数类的课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c++关于有理数类的课程设计Word格式文档下载.docx(11页珍藏版)》请在冰点文库上搜索。
)运算符,使得对有理数可以直接输入输出。
设有理数输入格式为:
整数1整数2//整数1为分子,整数2为分母
有理数输出格式为:
分子/分母
以下为代码
#include<
iostream.h>
conio.h>
stdio.h>
iomanip.h>
//usingnamespacestd;
删除此处才能为类定义友元函数
classrationalnumber//定义一个有理数类
{
private:
intfenmu;
//有理数分母
intfenzi;
//有理数分子
public:
rationalnumber(inta=1,intb=1);
//带默认形参的构造函数
voidsetnumber(inta,intb);
//设置分子分母的函数
rationalnumberoperator+(rationalnumberaa);
//重载加法运算符
rationalnumberoperator-(rationalnumberaa);
//重载减法运算符
rationalnumberoperator*(rationalnumberaa);
//重载乘法运算符
rationalnumberoperator/(rationalnumberaa);
//重载除法运算符
voiddisplay();
//有理数输出函数
//friendvoidadd(rationalnumbera,rationalnumberb);
friendrationalnumber&
yuefen(rationalnumber&
r);
//将约分函数设为友元函数
frienddoublezhuan(rationalnumberr);
//将有理数转换成实数函数声明
friendistream&
operator>
(istream&
input,rationalnumber&
//对输入流符号的重载为有元函数
friendostream&
operator<
(ostream&
output,rationalnumber&
//对输出流符号的重载为友元函数
/*对“<
”和“>
”重载的函数形式如下:
只能重载为友元函数
istream&
,自定义类&
);
ostream&
*/
};
rationalnumber:
:
rationalnumber(inta,intb)
fenzi=a;
fenmu=b;
}
voidrationalnumber:
setnumber(inta,intb)
rationalnumberrationalnumber:
operator+(rationalnumberaa)
rationalnumberc;
c.fenmu=fenmu*aa.fenmu;
c.fenzi=fenzi*aa.fenmu+aa.fenzi*fenmu;
returnc;
operator-(rationalnumberaa)
c.fenzi=fenzi*aa.fenmu-aa.fenzi*fenmu;
operator*(rationalnumberaa)
c.fenzi=fenzi*aa.fenzi;
operator/(rationalnumberaa)
c.fenmu=fenmu*aa.fenzi;
c.fenzi=fenzi*aa.fenmu;
display()//有理数输出函数的实现
cout<
fenzi<
"
/"
fenmu<
endl;
ostream&
r)//对输出符号的重载实现
if(r.fenmu<
0)
{
r.fenmu=-1*r.fenmu;
output<
-("
r.fenzi<
r.fenmu<
)"
;
}
elseif(r.fenzi<
r.fenzi=-1*r.fenzi;
else
("
returnoutput;
istream&
r)//对输入流符号的重载实现
//cout<
输入分子和分母:
input>
r.fenzi>
r.fenmu;
returninput;
doublezhuan(rationalnumberr)//将有理数转换成实数的函数实现
returnstatic_cast<
double>
(r.fenzi*1.0)/static_cast<
(r.fenmu);
rationalnumber&
r)//约分函数的实现
inta,b,temp;
if(r.fenmu>
r.fenzi)
a=r.fenmu;
b=r.fenzi;
a=r.fenzi;
b=r.fenmu;
while(b!
=0)
temp=a%b;
a=b;
b=temp;
r.fenzi=r.fenzi/a;
r.fenmu=r.fenmu/a;
returnr;
voidadd()
rationalnumbera;
rationalnumberb;
进行有理数的加法运算"
输入第一个有理数:
cin>
a;
输入第二个有理数:
b;
yuefen(a)<
+"
yuefen(b)<
="
yuefen(a+b)<
voidjian()
进行有理数的减法运算"
-"
yuefen(a-b)<
voidcheng()
进行有理数的乘法运算"
*"
yuefen(a*b)<
voidchu()
yuefen(a/b)<
voidmenu()
--------1.有理数加法运算--------"
--------2.有理数减法运算--------"
--------3.有理数乘法运算--------"
--------4.有理数除法运算--------"
--------5.退出运算--------------"
charxuan()
{
charc;
while
(1)
menu();
c=getch();
switch(c)
{
case'
1'
add();
break;
2'
jian();
3'
cheng();
4'
chu();
5'
}
if(c=='
)
break;
else
;
intmain()
system("
color0A"
以下有理数输出形式均为(a/b)"
rationalnumberr1(3,5),r2(2,9),r3,r4;
r1和r2由带参数的构造函数创建"
r1:
"
r1<
r2:
r2<
r3和r4由键盘输入(按任意键开始从键盘输入)"
getch();
输入r3:
r3;
输入r4:
r4;
r3:
yuefen(r3)<
r4:
yuefen(r4)<
转换成实数为:
setprecision
(2)<
zhuan(r1)<
r2:
zhuan(r2)<
r3:
r3<
zhuan(r3)<
r4:
r4<
zhuan(r4)<
r1+r2:
yuefen(r1)<
yuefen(r2)<
yuefen(r1+r2)<
r2-r3:
yuefen(r2-r3)<
r3*r4:
yuefen(r3*r4)<
r2/r4:
yuefen(r2/r4)<
你想做有理数的简单运算吗?
(y/n)"
c=getch();
if(c=='
y'
c=xuan();
elseif(c=='
n'
break;
;
}
已经退出运算,按任意键退出程序"
cls"
成功退出!
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 关于 有理数 课程设计