11080531_课程设计报告.pdfVIP

  • 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,

文档评论(0)

1亿VIP精品文档

相关文档