1、模拟计算器 摘 要 本课程设计的课题是设计一个模拟计算器的程序, 能够进行表达式的计 算,并且表达式中可以包含 Abs()和 Sqrt()运算。在课程设计中,系统开发平台 为 Windows ,程序设计设计语言采用 C+,程序运行平台为 Windows 或 *nix。 本程序的关键就是表达式的分离和处理,在程序设计中,采用了将输入的中缀表 达式转化为后缀表达式的方法,具有可靠的运行效率。本程序做到了对输入的表 达式(表达式可以包含浮点数并且 Abs()和 Sqrt()中可以嵌套子表达式)进行判 定表达式是否合法并且求出表达式的值的功能。经过一系列的调试运行,程序实 现了设计目标,可以正确的处理
2、用户输入的表达式,对海量级数据都能够通过计 算机运算快速解决。 关键词 C+程序设计;数据结构;表达式运算;栈;中缀表达式;后缀表达式; 字符串处理;表达式合法判定; 目目 录录 1 引 言 3 1.1 课程设计目的. 3 1.2 课程设计内容. 3 2 设计思路与方案 4 3 详细实现 5 3.1 表达式的合法判定 5 3.2 中缀表达式转化为后缀表达式 5 3.3 处理后缀表达式 7 3.4 表达式嵌套处理 8 4 运行环境与结果 9 4.1 运行环境 9 4.2 运行结果 9 5 结束语. 12 参考文献. 13 附录 1:模拟计算器源程序清单 . 14 1 引引 言言 本课程设计主要解
3、决的是传统计算器中,不能对表达式进行运算的问题,通 过制作该计算器模拟程序,可以做到快速的求解表达式的值,并且能够判定用户 输入的表达式是否合法。 该模拟计算器的核心部分就在用户输入的中缀表达式的 转化,程序中用到了“栈”的后进先出的基本性质。利用两个“栈” ,一个“数 据栈” ,一个“运算符栈”来把中缀表达式转换成后缀表达式。最后利用后缀表 达式来求解表达式的值。该算法的复杂度为 O(n),能够高效、快速地求解表达 式的值,提高用户的效率。 1.1 课程设计目的课程设计目的 数据结构主要是研究计算机存储,组织数据,非数值计算程序设计问题中所 出现的计算机操作对象以及它们之间的关系和操作的学科
4、。数据结构是介于数 学、计算机软件和计算机硬件之间的一门计算机专业的核心课程,它是计算机程 序设计、数据库、操作系统、编译原理及人工智能等的重要基础,广泛的应用于 信息学、系统工程等各种领域。学习数据结构是为了将实际问题中涉及的对象在 计算机中表示出来并对它们进行处理。通过课程设计可以提高学生的思维能力, 促进学生的综合应用能力和专业素质的提高。 模拟计算器程序主要利用了“栈”这种数据结构来把中缀表达式转化为后缀 表达式,并且运用了递归的思想来解决 Abs()和 Sqrt()中嵌套表达式的问题,其 中还有一些统计的思想来判定表达式是否合法的算法。 1.2 课程设计内容课程设计内容 本次课程设计为计算器模拟程序,主要解决表达式计算的问题,实现分别按 表达式处理的过程分解为几个子过程, 详细的求解过程如下: 1 用户输入表达式。 2 判定表达式是否合法。3 把中缀表达式转化为后缀表达式。4 求出后缀表达式 的结果。5 输出表达式的结果。通过设计该程序,从而做到方便的求出一个表达 式的值,而不需要一步一步进行运算。 2 设计思路与方案设计思路与方案 本课程设计需要考虑许多的问题,首先是表