#!/usr/bin/python
#coding=utf-8
import sys
sys.path.append('/home/administrator/python_dir/tools')
from Stack import Stack
num_stack = Stack()
operator_stack = Stack()
brackets_stack = Stack()
import char_tools
def execute_express(press):
i=0;
while i < len(press):
char = press[i]
if char_tools.str_is_number(press[i]):
j=exe_num(press,i)
if j > i and j != -1:
num_stack.push(press[i:j])
i=j
else:
num_stack.push(press[i])
i = i+1
elif char_tools.str_is_operator(press[i]):
operator_stack.push(press[i])
i = i+1
elif press[i] == '(':
brackets_stack.push(press[i])
i = i+1
elif press[i] == ')':
if brackets_stack.isEmpty() or operator_stack.isEmpty():
print '有错误'
raise RuntimeError('有错误')
else:
value = exe_num_value(num_stack.pop(),num_stack.pop(),operator_stack.pop())
num_stack.push(value)
i = i+1
else:
i = i+1
def exe_num_value(num0,num1,operator):
value = None
if operator == '+':
value = int(num0)+int(num1)
elif operator == '-':
value = int(num1)-int(num0)
elif operator == '*':
value = int(num1)*int(num0)
elif operator == '/':
value = int(num1)/int(num0)
else :
print '出现错误!\t\n'
raise RuntimeError('有错误')
return value
def exe_num(press,i):
while i <len(press):
if char_tools.str_is_number(press[i]):
i = i+1
continue
else:
return i
return -1
if __name__ == '__main__':
print '算数表达式计算'
execute_express('((*2 2)+(+ 1 2 ))')
print num_stack.pop()
分享到:
相关推荐
数据结构课程设计算数表达式求值 在数据结构课程设计中,算数表达式求值是一个非常重要的主题。本文将详细介绍算数表达式求值的实现过程,包括课程设计的介绍、课程设计的原理、数据结构分析、调试与分析等方面。 ...
在算数表达式求值中,前序遍历不常用,因为它不能直接处理带有优先级的运算符。 - **中序遍历**(左-根-右)对于中缀表达式(常见的运算符在操作数之间的形式,如 `(2 + 3) * 4 - 5`)是最直观的。中序遍历会按照...
数据结构课程设计-算数表达式求值实验报告 数据结构课程设计是计算机科学和技术专业的重要组成部分,旨在培养学生对数据结构和算法的理解和应用能力。在本实验报告中,我们将设计和实现一个算数表达式求值系统,...
算数表达式求解课程设计报告 本报告主要介绍了算数表达式的求解课程设计报告,涵盖了算数表达式的基本概念、栈结构的应用、运算符优先级的比较、顺序栈的设计和实现等方面的知识点。 一、算数表达式的基本概念 ...
这篇报告主要讨论的是一个大一下学期数据结构课程的设计项目,目标是实现一个算数表达式求值的程序。这个程序采用“算符优先法”来处理包含加减乘除及括号的算术表达式,并通过栈这一数据结构来辅助计算。 首先,...
在哈工大的数据结构课程中,学生被分配了一项作业,任务是实现一个算数表达式求值的程序。这个程序不仅需要处理基本的算数运算,如加法、减法、乘法和除法,还要扩展到处理小数计算以及涉及变量的计算。这个项目旨在...
最后,对于给定的文件"算数表达式求值",可能包含了实现这个算法的源代码。通过阅读和理解代码,可以深入学习到C语言编程、数据结构(栈)以及算法(算术表达式求值)的应用。同时,也可以通过调试和修改代码来增强...
在编译原理中,课程设计任务常常涉及到将高级语言的算数表达式转换为更低级的形式,以便机器能够理解和执行。这个过程通常包括语法分析、语义分析等步骤,其中四元式是一种常用的数据结构,用于表示中间代码,便于...
数据结构实习报告:设计一个演示用运算优先法对算数表达式求值过程的程序。 一、知识点总结 1. 数据结构:栈(Stack)、抽象数据类型(ADT)、操作数栈(SqStack1)、操作符栈(SqStack2) 2. 算数表达式求值:...
Python计算器是一种基于编程语言实现的计算工具,它可以处理不仅仅是简单的加减乘除,还支持复杂的算术表达式。在这个项目中,我们使用Python语言来构建一个递归下降解析器,这是一种解析器设计技术,用于解释输入的...
在编程领域,计算带有括号的算数表达式是一个经典的计算机科学问题,它涉及到解析算法、数据结构和操作符优先级。在这个C++项目中,我们有两个关键文件:`project` 和一个未指定名的源代码文件。这些文件很可能是...
数据结构课设——算数表达式求值 数据结构课设——算数表达式求值是软件网络技术领域中的一项重要课设,旨在让学生掌握算数表达式的求值方法和数据结构的应用。 算术表达式是一种由操作数、运算符和界限符组成的...
### C语言算数表达式求值课程设计报告 #### 一、项目背景与目标 在计算机科学领域,理解和实现算数表达式的解析与求值是一项基础而重要的技能。本课程设计的目标是通过C语言实现一个能够正确解析并计算出算数...
在计算机科学领域,二叉树是一种非常重要的数据结构,它能有效地表示许多问题,其中之一就是表示算数表达式。在给定的标题“求存在于二叉树中的算数表达式的值的算法”中,我们主要关注如何利用二叉树结构来解决计算...
#### 一、算数表达式的运算基础 在计算机科学领域,对算数表达式的处理是一项基本且重要的技能。本篇内容主要聚焦于如何通过编程手段来解析并计算复杂的算数表达式,特别是涉及加、减、乘、除以及小数、乘方等操作...
算数表达式求值,C++,对堆栈处理更深入的了解,使用堆栈
表示式分析可以用来计算一般的算数表达式,可以作为函数计算的模块。 目前版本为1.3,附带实现原理(编译原理的基本内容)。 main.cpp 有示例使用方法,in.txt为示例输入。 代码中有注释,使用方法有详细说明。 ...
这个“c#.NET算数表达式求值程序”是一个典型的实现,它可以帮助开发者或学生理解如何解析和计算数学表达式。下面我们将深入探讨这个程序涉及到的核心知识点。 1. **表达式解析**: - 表达式求值的关键在于解析...
java实现的算数表达式计算工具类,支持常用算数运算符的计算,包括min和max计算。