有理数运算c++.docx

上传人:b****5 文档编号:8101810 上传时间:2023-01-28 格式:DOCX 页数:11 大小:223.22KB
下载 相关 举报
有理数运算c++.docx_第1页
第1页 / 共11页
有理数运算c++.docx_第2页
第2页 / 共11页
有理数运算c++.docx_第3页
第3页 / 共11页
有理数运算c++.docx_第4页
第4页 / 共11页
有理数运算c++.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

有理数运算c++.docx

《有理数运算c++.docx》由会员分享,可在线阅读,更多相关《有理数运算c++.docx(11页珍藏版)》请在冰豆网上搜索。

有理数运算c++.docx

有理数运算c++

 

2015-2016学年第二学期

面向对象程序设计(c++)

大作业说明书

 

班级名称:

2014计算机科学与技术(对口)

学生姓名:

学号:

题目:

有理数运算系统

指导教师:

王汇彬

 

计算机与信息工程学院

 

1.设计思想

1.1题目要求

定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算、通过重载运算符“==”实现判定两个有理数是否相等。

写一个优化函数,它的作用是使有理数约去公分母,使保存的有理数分子和分母之间没有公约数(1除外)。

此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数。

1.2算法的设计

设有两个有理数a/b和c/d,则有:

(1)有理数相加分子=a*d+b*c;分母=b*d

(2)有理数相减分子=a*d-b*c;分母=b*d

(3)有理数相乘分子=a*c;分母=b*d

(4)有理数相除分子=a*d;分母=b*c

2.软硬件运行环境及开发工具

编程语言:

c++。

开发环境:

Windows7、visualc++6.0。

3.程序图

3.1程序框图

类名

类型

成员名

描述

num

Int

a

分子

Int

b

分母

double

r

转化后的实数

Num

Operator+(num)

加法重载

Num

Operator-(num)

减法重载

Num

Operator*(num)

乘法重载

Num

Operator/(num)

除法重载

Num

Operator==(num)

等于号重载

Void

Show()

显示有理数

Void

Reduction(int,int)

约分

Double

R()

转换为实数

A

Void

Menu(num,int)

显示菜单

3.2系统流程图

如图3-1所示:

图3-1系统流程图

3.3类图

如图3-2所示:

图3-2类图

4.过程论述

4.1知识点

本系统是一个关于有理数运算的系统,涉及到了以下知识点:

(1)类和继承的使用,将参与运算的变量封装在类中,方便使用;

(2)运算符重载,根据用户的需要,选择相应的运算;

(3)友元函数的使用,通过友元函数访问其他类中的私有成员;

(4)模块化的使用,将每种功能都放在相应函数内,分工清晰,方便修改。

4.2部分代码分析

(1)num类将要进行运算的变量和方法封装在一块,方便操作,主要设计代码如下:

classnum{

public:

inta,b;

doubler;

num(inta=0,intb=0){

this->a=a;

this->b=b;

}

friendnumoperator+(constnum&n1,constnum&n2);//运算符重载

friendnumoperator-(constnum&n1,constnum&n2);

friendnumoperator*(constnum&n1,constnum&n2);

friendnumoperator/(constnum&n1,constnum&n2);

friendbooloperator==(constnum&n1,constnum&n2);

doubleconvert(){//将有理数转化实数

r=(double)a/b;

returnr;

}

voidreduction(int,int);//约分,将相同的公约数去掉

voidshow();//显示

};

(2)主界面设计,主要代码如下:

voidA:

:

menu(numn1,numn2,numn3,inta,intb,intc,intd){//主菜单

intn;

charch;

do{

cout<<"***********有理数运算************"<

cout<<"\t1.'+'"<

cout<<"\t2.'-'"<

cout<<"\t3.'*'"<

cout<<"\t4.'/'"<

cout<<"***********有理数运算************"<

cout<<"请选择你所需要的运算符:

";

cin>>n;

switch(n){

case1:

……

break;

case2:

……

break;

case3:

……

break;

case4:

……

break;

}

cout<<"是否继续?

(n/y):

";

cin>>ch;

if(ch=='n'||c=='N')

break;

if(ch=='y'||c=='Y')

continue;

}while(n);

}

(3)选择“1.+”,调用“+”运算符函数,并判断分子分母是否相等,主要代码如下:

case1:

if((a*d)==(b*c)){

cout<<"n1=n2"<

}

else{

n3=n1+n2;

cout<<"有理数为:

";

n3.show();

cout<<"约分后为:

";

n3.reduction(a*d+b*c,b*d);

cout<<"转换为实数:

"<

}

break;

(4)选择“2.-”,调用“-”运算符函数,并判断分子分母是否相等,主要代码如下:

case2:

if((a*d)==(b*c)){

cout<<"n1=n2"<

}

else{

n3=n1-n2;

cout<<"有理数为:

";

n3.show();

cout<<"约分后为:

";

n3.reduction(a*d-b*c,b*d);

cout<<"转换为实数:

"<

}

break;

(5)选择“3.*”,调用“*”运算符函数,并判断分子分母是否相等,主要代码如下:

case3:

if((a*d)==(b*c)){

cout<<"n1=n2"<

}

else{

n3=n1*n2;

cout<<"有理数为:

";

n3.show();

cout<<"约分后为:

";

n3.reduction(a*c,b*d);

cout<<"转换为实数:

"<

}

break;

(6)按“4./”,调用“+”运算符函数,并判断分子分母是否相等,主要代码如下:

case4:

if((a*d)==(b*c)){

cout<<"n1=n2"<

}

else{

n3=n1/n2;

cout<<"有理数为:

";

n3.show();

cout<<"约分后为:

";

n3.reduction(a*d,b*c);

cout<<"转换为实数:

"<

}

break;

}

5.结果分析

(1)主界面设计,如图5-1所示。

图5-1主界面图

(2)选择“1.+”:

结果如图5-2所示。

图5-2“+”运算图

(3)选择“2.-”:

结果如图5-3所示。

图5-3“-”运算图

(4)选择“3.*”:

结果如图5-4所示。

图5-4“*”运算图

(5)按“4./”:

结果如图5-5所示。

图5-5“/”运算图

6..结论

本次作业的实现过程中,发现自身存在很多不足,很多知识点都没有掌握好。

通过翻阅课本和网上查找资料解决了编程过程中存在的问题,在翻阅资料的同时,发现一个程序不仅仅是可运行的,较好的可读性和较高的运行效率是很重要的。

 

面向对象程序设计(C++)课程大作业评分表

 

学号

2014214188

姓名

徐红燕

项目

占比

评分标准

得分

文档

50%

格式规范,逻辑清晰,完整体现软件设计与开发过程

49

程序

10%

程序运行正确

10

10%

使用了三种以上面向对象特性得6分,四种得8分,五种得满分10分

8

20%

程序自主编写,熟悉程序的各部分代码

20

10%

程序复杂度

8

总分

95

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1