一、*需求分析*
实现一个简单的计算器,可以进行算术表达式的计算;操作运算包含加、减、乘、除、括号、与、或、非,即21+35(3+4)、1!2、3&4等计算表达式。后缀表达式严格的从左到右进行计算;假定输入表达式有空格进行简化处理。
计算器需要有良好的操作界面和报错功能,图形界面需要连接计算器进行信号控制,报错需要在计算器进行除数和运算符连续等进行提示,比如在除数为0时进行报错题时error提示。
二、*设计*
根据上述需求分析,需要设计一个交互良好的计算器,设计图形界面与计算器模型相连接;将图形界面的文本进行传值,进入计算器mode进行计算器。
*计算器mode:*
1.设立两个堆栈,一个用来保存运算符,另一个用来保存数字。
2.在表达式首尾添加标记运算符,该运算符运算优先级最低。
3.从左至右依次遍历字符串,若遍历到运算符,则将其与运算符栈栈顶元素比较,若运算符栈栈顶运算符优先级小于该运算符或者此时运算符栈为空,则将运算符压入堆栈。遍历字符串中下一个元素。
4.若运算符栈栈顶运算符优先级大于该运算符,则弹出该栈顶运算符,再从数字栈中依次弹出两个栈顶数字,完成弹出的运算符对应的运算得到结果后,再将该结果压入数字栈,重复比较此时栈顶运算符与当前遍历到的运算符优先级,视其优先级大小重复步骤(3)或步骤(4)。
5.若遍历到表达式中的数字,则直接压入数字栈。