- 2
- 0
- 约2.96万字
- 约 15页
- 2017-06-27 发布于浙江
- 举报
11080531_课程设计报告
五邑大学课程设计
数据结构课程设计报告
2012~2013 年度 第2 学期
院系: 计算机学院
学号:
姓名: 吴嘉楠
任课教师: 白明 成绩评定:
完成日期:2013 年6 月4 日
课程设计题目:分数计算
1、 问题描述
如今计算机科技那么发达,拥有优秀用户体验的计算器应用软件不少,但却鲜有能将运算结果以
自然书写方式显示(非一长串经四舍五入的不精确的浮点数,而是由整数结合分式)的程序。
本次课程设计就尝试去实现它。
2、 数据结构的设计
(一)分数的存储结构
随着思考从仅有初步构思,到逐步深入,此程序的数据结构被我改了数次。
1) 原本希望做:通过菜单可以由用户自由选择带分数或假分数显示。输入时可以自由选择输入
带分数还是假分数:提供两个按钮:“插入带分数”、插入假分数。比如摁下“带分数”以后
显示屏将会出现:
□
□
123
红色框中的位置就是当前正在编辑且还从未输入过数字的地方。整个分数用HTML 的表格写:
以上图就是一个2*2 表格,左边一列合并单元格。
分母就是已经输入数字并且编辑光标已经移开时的样子。
由此我陷入一个问题:带分数和假分数的存储结构是否应统一。诚然他们是同一个类的实例
更好处理,因为到计算一步都是统一用假分数形式。所以有几种方案:
a) 一个类里有 5 个 int 属性分别存假分数时的分子分母和带分数时的整数部分、分子、分
母。
b) 统一用假分数时的分子分母存储。需要带分数时再转换。
方案b 行不通,因为一个标准的带分数的分子部分是一定小于分母的,但是在用户输入的时
候,中间过程有可能会发生这样的事。
图形界面的计算器无法知道用户何时完成输入,所以每一次摁键都需要将数字立即存储。如
果希望将用户的输入原样存储,则需要再另开 int 变量用于专门处理,否则从假分数转为带
分数时分子一定小于分母。
方案a 也很麻烦。得小心处理两种数据不对应的情况,比如某时刻程序异常,带分数形式存
储的数值,跟假分数形式存储的数值不一样的时候。
2) 问题绕不开。再考虑到实际数学计算中其实只用假分数。于是把带分数的功能拿掉了。但是
另一个设想又被我提出:分子、分母也可能是一个分式。
这意味着,分子分母也可以是一个指针,指向另一条式子。
理清思路以后,我设计了如下结构:
一条“式子”用一个对象封装。“式子”的意思是,这个顺序结构可以由数字、分数和加、减、
乘运算符排列成。没有除,因为除被统一到分式了。
分子、分母可以是一个数,也可以是指向另一条“式子”的指针。当指针为空时那个分数结
点的数字才是有效的。
后俩我发现,括号也可以统一这个结构中去,做法是:整个分数也可以是一个指向另一条“式
子”的指针。
无论分数指向的“式子”里面有没有分数,总之它得先被计算,计算结果返回到分数本身。
某一天,我突然发现这个结构是一棵树。
根节点
一条式子: 分数 符号 分数 ……
可以使用树的“孩子兄弟表示法”来存储这棵树。每个节点有两个指针:firstChild,
您可能关注的文档
最近下载
- 贵州省2025年中考化学试题.pdf VIP
- 暖通安装工程施工工艺标准(159页 附图丰富).pdf
- 专题05 30天熟记中考课标1600词(Day 25~Day 30)(知识清单)(背诵版).docx VIP
- GJB9001C-2017内审员培训教材.pptx VIP
- 2023年陕西省直遴选笔试真题汇编含答案解析(夺冠).docx VIP
- 医院肝胆胰脾外科2025年年底工作总结及2026年工作计划.docx VIP
- 可控核聚变系列研究(一):聚变启航,未来已来.pdf VIP
- 卷烟物流配送中心建设项目规划设计控制指标国家局.pdf VIP
- 16G362 钢筋混凝土结构预埋件.pdf
- 《人工智能技术基础》课件全套 第1--10章 人工智能简介--- 机器学习方法.pdf
原创力文档

文档评论(0)