分数类的设计与实现.docx
《分数类的设计与实现.docx》由会员分享,可在线阅读,更多相关《分数类的设计与实现.docx(23页珍藏版)》请在课桌文档上搜索。
1、课程设计任务书学院信息科学和工程专业电子信息科学和技术学生姓名学号设计题目1.分数类的设计和实现2.生命游戏1 .分数类的设计和实现建立用于完成分数形式运算的类RationalNumMrt,编写一个测试该类的程序。用整数变量表示类的私有数据(即分子和分母)。给类供应一个能够对所声明的对歙初始化的构造函数。为了能够在不供应初始化值的状况下也能对对象初始化,构造函数中应当包含默认的值。构造函数还应当以最简分数的形式存储数据,即2/4应当在对象中存储成分子为1、分母为2的形式。公有成员函数应当有以下功能:1 .两个有理数相加,以俄筒形式保存结果;2 .两个有理数相减,以最筒形式保存结果:3 .两个有
2、理数相乘,以最简形式保存结果:4 .两个有理数相除,以最简形式保存结果:5 .以a/b的形式输出有理数(a是分子,b是分母):6 .以浮点形式输出有理数.2 .生命游戏生命游戏其实是一个零玩家游戏。它包括个二维矩形世界,这个世界中的每个方格居住着一个活着的或死r的细胞.一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数1.假如相邻方格活着的细胞数量过多,这个细胞会因为资源展乏而在下一个时刻死去:相反,假如四周活细胞过少,这个细胞会因太孤寂而死去。L假如个细胞四周有3个细胞为生(一个细胞四周共有8个细胞),则核细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变)3 .
3、假如一个细胞四周有2个细胞为生,则该细胞的生死状态保持不变:4 .其它状况下,该细胞为死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)进度支配:第17周:分析题目,查阅课题相关资料,进行类设计、算法设计:第18周:上机调试程序,程序测试和分析,撰写课程设计报告,准备答辩。指导老师(签字);年月日学院院长(签字)年月日目录PARTIO1需求分析O2算法基本原理0123Ooo3类设计04详细设计14.1 类的接口设计14.2 类的实现14.3 主函数设计45运行结果和分析45.1 程序运行结果45.2 运行结果分析5PARTII56基于MFC的图形界面程序开发56.1 基于MFC的图形界
4、面程序设计5(1)界面设计5(2)代码设计66.2 测试程序106.3 MFC程序编写总结117参考文献112.2 戒法仃理数减法法则:减去一个数,等于加上这个数的相反数。其中:两变:减法运算变加法运算,减数变成它的相反数.一不变:被减数不变。可以表示成:a-b=a+(-b).2.3 乘法I.两数相乘,同号为正,异号为负,并把确定值相乘。例;(-5)(-3)=15(-64=-242,任何数字同O相乘,都得O.例;OXl=O3 .几个不等于0的数字相乘,积的符号由负因数的个数确定。当负因数有奇数个数时,积为负;当负因数仃偶数个数时,积为正。并把其确定值相乘。例:-10)X(-5)X(-0.1)(
5、-6)=积为正数,而(-7)X(-25)=积为负数4 .几个数相乘,有一个因数为。时,积为0.例:3X-2)0=05 .乘积为1的两个有理数互为倒数(reciprocal)。例如,一3和一1/3,3/8和-8/36 .4除法1 .除以一个数等于乘以这个数的倒数。(留意:。没有倒数)2 .两数相除,同号为正,异号为负,并把确定值相除。3 .0除以任何一个不等于0的数,都等于0。4 .0在任何条件下都不能做除数。3类设计从上面的算法分析可以看到,本设计面临的计算问题的关键是设计一个有理数运算类.这个类必需能将用户给定的2个整数表达成有理数,同时必需进行合法性检测.同时须要为类设计4个方法,分别来运
6、算加法,减法,乘法和除法,为了使有理数运算看起来更符合自然,所以必需利用C+的重效技术,来对相应的4种运算符进行重教,并且还须要设计一个方法来满意有理数分数形式和小数形式的转换.要从用户输入创建一个有理数,为类设计了一个带有默认参数的构造函数来满意需求。依据以上的分析,设计出CRationaINumber类。如图3.1所示。PARTI1需求分析(1)有理数可分为整数和分数也可分为三种,一:正数,:0,三:负数.除了无限不循环小数以外的实数统称有理数。在数学上仃理数的运用相当广泛,所以款简易的仃理数计算器可以大大节约时间,而且不会因为人为误差导致计算结果出错.(2)依照它们的序列,有理数具有一个
7、序拓扑。有理数是实数的(倜密)子集,因此它同时具有一个子空间拓扑.接受度量,有理数构成一个度量空间,这是它的第三个拓扑。幸运的是,全部:个拓扑一样并将有理数转化到一个拓扑域。有理数是非局部紧致空间的一个重要的实例。这个空间也是完全不连通的。有理数不构成完备的度量空间:实数是它的完备集。(3)程序测试数据选择若干种有代表性的数据来进行测试,通过临界数据的测试来推断系统的正确性.2算法基本原理2.1加法有理数的加法和小学的加法大有不同,小学的加法不涉及到符号的问题,而有理数的加法运算总是涉及到两个问题:一是确定结果的符号:二是求结果的确定值.在进行有理数加法运算时,首先推断两个加数的符号:是I可号
8、还是异号,是否有0。从而确定用那一条法则.在应用过程中,确定要牢记先符号,后确定值”,娴熟以后就不会出错了。多个有理数的加法,可以从左向右计第,也可以用加法的运算定律计算。法则1 .同号相加,取相同符号,并把确定值相加。2 .确定值不等的异号加减,取确定值较大的加数符号,并用较大的确定值减去较小的确定值。互为相反数的两个数相加得0。3 .个数同0相加,仍得这个数。定律L同号相加,取相同符号,并把确定值相加.H.确定值不相等的异号两数加减,取确定值较大的符号,并用较大的确定值减去较小的确定值。互为相反数的两个数相加得0。ffl.一个数同0相加,仍得这个数.IV.相反数相加结果确定得0。加号运算符
9、重载函数声明CRationalNumberoperator-(CRationalNumber&rn):减号运算符重载函数声明CRationaINumberoperator*(CRationalNumber&rn);乘号运算符重载函数声明CRationaINumberoperalor(CRationalNumbcr&rn);除号运算符重载函数声明oatConvertFIoatO;将有理数转换成浮点数;ostreain&operator(ostream&,RaIionalNUrnber&);重载流插入运算符,使分数以(ab)形式输出函数声明类CRatiOnalNUmber设计了个带仃默认构造参数的
10、构造函数,便利用户构造仃理数,同时设计了4个承载函数,可以让运用者像运用一般整数那样对有理数运算进行操作,大大的提高了运用简洁性。4.2类的实现RationalNUnlber.cpp文件,类实现#includestdafx.h#inchideRationalCompute.h#includeRationaINuniberh/ConstructionZDestruction/CRationalNumber:CRationalNumber(intnt,intdt)带布默参数构造函数的定义(inttemp,num,n,d;n=nt;d=dt;CRatiOnalNumber+numtor:int-O+
11、dentor:int=1+CRatIonalNumber(intnt,intdt)void+CRationalNumber()+operator+(CRationa1Number&r)CRationalNumber+operator-(CRationa1NumberArn):CRationalNumber+operator*(CRationaINumberArn):CRationalNumber+operator/(CRationalNumber&rn):CRationalNumber+ConvertFloatO:float图3.1CRalionalNumberUML图形表示4详细设计整个程序
12、分为三个独立的文档,RationalNumbech文件中为有理数类CRationaINUmber的申明,RationaINumber.Cpp文件中包括有理数类的成於函数实现文件:main.cpp文件包括程序的入口函数和测试数据。4.1类的接口设计/RationaINumbeLh文件,实现类的声明classCRationalNumber(public:CRationaINumber(intnl=0.intdl=l);带有默认参数的构造函数声明virtual-CRationaINumberO;public:分子分母intnumtor;intdentor;CRationalNumberOPeralQ
13、r+(CRalionalNumber&rn);n=d;d=num;)temp.numtor=temp.numtorn:temp.dentor=temp.dentorn;return(temp);CRationalNumberCRationaINumber:operator-(CRationalNumber&rn)减号运算符重载函数的定义CRationaINumbertemp;temp.numtor=this-numtor*m.dentor-m.numtor*this-dentor;temp.dentor=this-dentor*m.dentor;inttempl,num.n.d;n=tenp.
14、numtor;d=tem.dentor;if(nd)H求分子和分母的最大公约数tempi=n;n=d;d=tempkwhile(d!=O)num=n%d;n=d;d=nurn;Itemp.numtor=temp.numtorn;tem.dentor=temp.dentorn;return(temp);CRationalNumberCRationalNumber:operator*(CRationalNumber&m)乘号运算符重载函数的定义CRalionalNumbertemp;if(nnumtor*m.dentor+m.numtor*this-dentor;(emp.dentor=this-
15、dentor*rn.dentor;inttempl,num.n,d;n=(enp.nuntor;d=temp.dentor;if(nnumtor)float(this-dentor);return(temp);OStreaoperator(ostream&output.RationalNumber&rn)重载流插入运算符的定义,使分数以(ab)形式输出(if(m.dentor=0)分母是0输出errorcout,error!0&rn.dentor0)output-m.numtor,7,-m.dentor;elseoutputm.numtor7rn.dentor;returnoutput:)在类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分数 设计 实现
链接地址:https://www.desk33.com/p-303271.html