- 25
- 0
- 约 9页
- 2017-10-22 发布于北京
- 举报
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)时却与我们预期的结果
您可能关注的文档
最近下载
- 2026年铁路调度员考试大纲及题型分析.docx VIP
- 《大学生物专业英语introduction》ppt课件教案模板.ppt VIP
- 2026广东新高考地理考纲解读精练试卷(附答案解析).docx VIP
- 2025年统计学基础知识考试试题及答案.docx
- 2025年高考真题全国一卷英语真题.pdf VIP
- 山东省危险化学品企业变更管理指南.docx VIP
- 危险化学品企业变更管理指南(试行).doc VIP
- Q-GDW12124.5-2024 高压开关技术规范第5部分:高压开关柜.pdf VIP
- 经济学研究方法论:理论与实务完整版电子课件.ppt
- 外研版七年级上册英语单词表.docx VIP
原创力文档

文档评论(0)