计算器中的数据处理

后缀表达式

什么是后缀表达式,像我们平时常见的算式中运算符在数字中间的是中缀表达式。例如:9 + 3 ∗ (5 + 4/2) – 6。后缀则是将运算符放在两个数的后面,例如前面的中缀表达式转换成后缀:9 3 5 4 2 / + * + 6 -。在转化后括号已经处理完毕,后缀表达式在计算的过程中,借助栈,从左到右依次获取数据,直到出现运算符,把运算符之前的两个数据根据本运算符进行计算,把这个两个数据删除后用计算的结果代替它俩原本的位置。

例如运算符“/”前的两个数据4 2

4/2=2–>9 3 5 [2] + * + 6 –

运算符“+”前的两个数据5 2

5+2=7—>9 3 7 * + 6 –

运算符“*”前的两个数据3 7

3*7=21—>9 21 + 6 –

运算符“+”前的两个数据9 21

9+21=30—>30 6 –

运算符“-”前的两个数据30 6

30-6=24—>24

最终结果为24

中缀表达式转后缀表达式

那中缀表达式如何转化成后缀表达式呢?需要借助栈共同实现,这里用列表代替处理,列表l1用于存储后缀表达式,列表l2用于处理运算符。获取的表达式是字符串,需要先对字符串进行处理。同时也要设定运算符的优先级。

计算器中的数据处理

以上为对字符串表达式的处理,及转换为后缀表达式,后续会返回处理好的后缀表达式列表l1.

后缀表达式的计算

有了处理好的后缀表达式计算起来就比较方便,同样需要一个数组step作为转换区间去处理后缀表达式的数据。从左到右依次获取l1中的数据或运算符,如果是数字的话直接填入step,为运算符的则获取运算符前的两个数据,具体的思路在什么是后缀表达式那里已经说的比较清楚。实现的过程需要注意在step中删除或填入数据。代码如下:

计算器中的数据处理
(0)
上一篇 2023年8月17日 下午3:44
下一篇 2023年9月3日 上午9:58

猜你喜欢

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注