c++程序设计言-有理数运算程序.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c程序设计言-有理数运算程序

合肥学院 计算机科学与技术系 课程设计报告 2009~2010学年第二期 课程 程序设计语言Ⅱ课程设计 课程设计名称 有理数运算程序 学生姓名 学号 0904032001 专业班级 计科系网络工程2班 指导教师 何立新 刘洁群 2010年9月 一 、题目 有理数运算程序:定义并实现一个有理数类,通过重载运算符+、-、*、/对有理数进行算术运算,通过重载运算符==实现判定两个有理数是否相等。写一个优化函数,它的作用是使有理数约去公分母,也即是使保存的有理数分子和分母之间没有公约数(除去1以外)。此外,还要定义一个将有理数转换为实数的函数,再加上构造函数和有理数输出函数. 二 、问题的分析 对有理数进行加减乘除和比较大小, 什么是有理数 怎么把有理数表示出来 怎样将有理数存储起来 怎样能对所有的有理数进行操作 优化函数是怎样解决和实现的 运算后的结果是怎样存储和输出的 首先类的具体内容 三 、算法的设计 首先我们得明白几个问题 无限不循环小数和开根开不尽的数叫无理数,通俗的讲整数和分数统称为有理数。(如3,-98.11,5…,7/22都是有理数) 数学上,有理数是两个整数的比,通常写作 a/b,这里 b 不为零。分数是有理数的通常表达方法,而整数是分母为1的分数,当然亦是有理数。全体有理数构成一个集合,称为有理数集。这样我们就可以把有理数集以分数的形式存储起来,即输入两个整数,它们的比值就是有理数。 我们可以从整个有理数集中选择两个对象作为代表进行有理数的操作,这样就能可以将有理数抽象一个类将有理数问题抽象为两个部分,数据成员和成员函数。把有理数 放在数据成员中,在成员函数中对其进行加减乘除操作。设有两个有理数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 4. 对问题分析的第四个疑问可以用重载运算符, 5. 定义一个求最大公约数的函数 6. 运算结果有两种存储方式,其一放在类的一个新对象中,其二放在类的私有数据中。 7. 类的具体实现如表一 开始设计理念:有理数是一个可以化为一个分数的数,例如2/3,533/920,-12/49都是有理数,但在C++中,并没有预先定义有理数。我们可以定义一个有理数类,将有理数的分子和分母分别存放在两个整型变量中,输入两组整型常量.利用类中定义的有理数函数就能得到两组有理数,我们先对两个运算符进行重载,测试成功后再扩展到所有的运算符,优化函数在创建有理数对象时应执行,在执行其它各种运算之后也需执行它,这样可保证所存储的有理数随时都是最优的。对于判断两个有理数是否相等,由于在对有理数进行各种运算后都对其进行优化,所以判定两个有理数是否相等只需判定它们两个的分子和分母分别相等即可。 第一次设计后的改进:定义一个有理数的功能类(如class Fraction),将整型数组(如int a[2])设计为其私有成员,再定义私有浮点型数据p1,定义一个公有的优化函数(如Zdg(int ,int)求出两个整数的最大公约数d。)定义一个公有的无形参的构造函数(如Fraction())用于将整型数组最优化即将两数分别除以它们的最大公约数d将新得到的数重新赋给数组a[2]。先定义两个运算符进行重载(例如设刚刚得到的两个有理数为a/b和c/d,则有:有理数相加时我们可以让分子=a*d+b*c;分母=b*d。有理数相减时我们可以让分子=a*d-b*c;分母=b*d)并将 形参设为类,用相同的方法我们可以得到乘的运算符重载函数,即直接用分子与分子,分母与分母分别相乘,除的运算符重载函数即是将被除数的倒数与另一个有理数相乘,再用布尔型运算符重载函数对关系运算符重载(如bool operator ( Fraction x)),再定义一个关系运算符(如compare(int x))判断两个有理数的关系是大于,小于还是等于。在定义每个运算符重载函数时都同时再定义一个相同的此函数且参数用整型实数x.并且在每个函数被调用时都要调用优化函数,这样就使得每次执行程序时得到的结果都是最优解。在主函数中申请两个类的无形参对象和一个带形参的对象,定义一个整型实数a,使其与分数进行比较,来实现运算的普遍性. 运行时首先提示输入一个分数,这时要输入两个实数作为分数的分子和分母,按Enter键,然后是以同样的方法输入另一个分数按Enter键,根据输入实数提示输入一个实数。再按Enter键显示结果。 四 、上机调试过程 问题一,开始设计的程序并不能满足我们的需求当我们输入一个整型实数(例如 3)时却

文档评论(0)

nus786 + 关注
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档