数据机构课程设计——模拟复杂运算的计算器

文章描述了一个使用Python编写的算术表达式计算器,它能处理四则运算、乘方、求模以及括号运算,支持异常处理如除数为0和少括号错误。通过中缀表达式转后缀表达式的方法,利用栈的数据结构进行运算符优先级判断和计算,但不支持负数开头的运算,需通过0-运算符绕过。程序还包含对错误输入的处理,当输入a时退出程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写在前面:个人数据结构学的不好,编程能力很差,下面内容全是自己的理解,可能不够正确,欢迎大家在评论区指出。

代码功能包括四则运算,乘方,求模,带括号‘左括号()右括号’的复杂运算,除数为0报错和少括号报错。但是代码有问题

                          代码有问题不能够处理负数开头的运算,例如-4+6就会无法得出结果

如果必须要使用负数运算 ,可以写成0-4+6,就能够正常运行

题目描述: 

1.使用Python语言完成算术表达式计算器的设计。包含四则运算求模和乘方,和带括号的运算
2.中缀表达式转换为后缀表达式的实现方法。
3.基于后缀表达式的计算方法。
4.异常处理和错误信息输出。

采用栈的结构知识进行完成,整体的设计包括四个方面,1运算符号优先级,2中缀转后缀,3后缀运算,4报错处理

1运算符号的优先级确定,用getprioprity函数,该函数功能自行查阅。乘方最高。乘除,求模,第二。加减最低ÿ

目 录 摘 要 1 前 言 2 正 文 3 1. 采用类C语言定义相关的数据类型 3 2. 各模块的伪码算法 5 3. 函数的调用关系图 9 4. 调试分析 10 5. 测试结果 11 6. 源程序(带注释) 14 总 结 22 参考文献 23 致 谢 24 摘 要 目前,计算器应用很广泛,本程序是关于这方面的,其主要功能是进行简单的四则运算 ,其特点之一是支持带括号的四则运算;二是用到栈的一些相关操作,不但对操作有提示,还对与异常输入信息报错。 通过该题目的设计过程,可以加深理解线性表及栈的逻辑结构、存储结构,掌握线性表及栈上基本运算的实现,进一步理解和熟练掌握课本中所学的各种数据结构,学会如何把学到的知识用于解决实际问题,培养学生的动手能力。 关键字:堆栈,初始化栈,入栈,出栈。 前 言 很多涉及计算器程序的的算法都是以栈的相关操作为基础,通过计算器的设计,有利于在学习中更好的理解栈及其相关的操作。 通过对计算器计算过程演示,看到了到它的一些性能及相关优势。 我们在写程序时,大框架已成的情况下,仍然发现有些错误很难找到,对于这样的问题,可以利用计算机纠错功能,先运行,再根据题提示修改和完善程序。 在计算器用到的算法中,c语言算法可读性很强,一方面,是因为c语言是高级语言,是面向程序员的语言,二是c语言的功能是很完备的,可以达到事半功倍的效果,和其他语言相比量是比较少。栈的应用使该程序更出色。 正 文 1. 采用类c语言定义相关的数据类型 计算器的演示功能如下: A. 提示输入格式 B. 提示输入 C. 显示输入信息 D. 对有异常的输入报错并重新输入 E. 使用顺序栈实现数据的输入 (1)/*定义堆栈*/ typedef struct{ double data[M]; int top; }Stack; (2)/*初始化堆栈*/ InitStack(Stack *s) { s->top=0; } (3)/*判断栈是否为空*/ int StEmpty(Stack *s) { if(s->top==0) { return 1; } else { return 0; } } (4)/*入栈操作*/ StPush(Stack *s,double x) { if(s->top==M) { printf("The stack is overflow!"); } else { s->top=s->top+1; s->data[s->top]=x; } }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值