|
分享源码
界面截图: |
|
是否带模块: |
纯源码 |
备注说明: |
- |
在很多年前,试过用代码实现算术表达式的计算,但是因为当时知识储备不足,所以不了了之。
直到现在,学到的知识储备已经能够支撑我实现当年未实现的代码。
(其实就是中缀表达式转后缀表达式的实现)
下面是大致的实现过程
1、把算术表达式,转换城后缀表达式。
转换过程:
先定义一个数组和一个栈变量
1:遍历表达式,遇到数字的话直接加入到,后缀表达式数组里。
2:遇到运算符和(,则先加入到运算符栈里。加入的规则是,运算符优先级高于栈定运算符时,直接加入。优先级低于时,则先把栈顶运算符移到后缀表达式数组里,直到加入运算符优先级高于栈顶运算符优先级后再加入到运算符栈里。如果遇到 )时,则把()内的全部运算符先移到后缀表达式数组里。
2、遍历后缀表达式数组,进行计算。
例子:12 + ((2 + 5 * 2) - 10)/ 2
后缀表达式: 12 2 5 2 * + 10 - 2 / +
计算过程如下:
12 2 5 2 * + 10 - 2 / +
5 * 2 = 10 >>> 12 2 10 + 10 - 2 / +
2 + 10 = 12 >>> 12 12 10 - 2 / +
12 - 10 = 2 >>> 12 2 2 / +
2 / 2 = 1 >>> 12 1 +
12 + 1 = 13
计算结果为:13
表达式计算.e
(17.05 KB, 下载次数: 41)
|
评分
-
查看全部评分
|