有理数运算C++课程设计报告Word文档格式.docx
- 文档编号:18737900
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:16
- 大小:247.03KB
有理数运算C++课程设计报告Word文档格式.docx
《有理数运算C++课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《有理数运算C++课程设计报告Word文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
(1)有理数相加分子=a*d+b*c;
分母=b*d
(2)有理数相减分子=a*d-b*c;
(3)有理数相乘分子=a*c;
分母=b*d
(4)有理数相除分子=a*d;
分母=b*c
优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。
对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。
选做内容
重载插入(<
<
)和提取(>
>
)运算符,使得对有理数可以直接输入输出。
设有理数输入格式为:
整数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;
运行界面如下:
按任意键后出现以下界面:
输入r3的值:
这时你可以选择y或n进行选择,但注意必须是小写。
若输入的为y:
选择不同的数字依次会出现以下界面:
若输入的为n:
实验总结:
通过此次C++的课程设计,我熟练掌握了面向对象程序语言中的很多功能的实现,并且熟悉了很多调试程序的方法,懂得了处理错误的方法。
进一步掌握面向过程和面向对象程序设计的基本方法和编程技巧,巩固所学理论知识,使理论与实际相结合。
从而提高自我分析问题、解决问题的能力。
通过课程设计,在各方面的能力得到了锻炼
经历了这次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。
没有足够的耐力和信心就很难坚持对课程设计每一步的顺利进行。
欢迎下载,资料仅供参考!
!
资料仅供参考!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有理数 运算 C+ 课程设计 报告