易语言资源网 - 做最全的易语言资源下载社区
精易论坛授权登录

【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~   [复制链接]

    2023-08-05 09:18:19
    高级教程源码
    易语言资源网
    786 次浏览
    来源链接

波兰表达式:


这里没找到什么好的帖子可以通俗点说,我就用自己的语言解释下首先,我们平时熟悉的 1+1 的运算符(操作符)是在中间的,所以就叫中缀表达式

而波兰表达式的操作符是在前面,1+1 <=> + 1 1,这种被成为前缀表达式

但今天的重点不是他们,是逆波兰表达式  1+1 <=> 1 1 + ,又叫后缀表达式

那这些表达式他们有什么用呢?莫非这样一转程序就能理解了?

给你看个东西  1 + 1 <=> + 1 1 <=> +(1,1)

诺,熟悉不,把它转换为调用函数的方式,问题不就迎刃而解了?

那为什么说今天的重点是后缀表达式呢

因为我没找到中缀表达式的计算过程

因为后缀表达式比中缀表达式更好理解点(自认为)

就好比 1 1 + ,如果你看到这个式子你应该怎么去计算1+1? 把+号前面两个数字,相加对吧~

1 + 2 - 1 <=> 1 2 + 1 -   =》先把+号前面两个数字相加,得到3,原后缀表达式可以转换为    3 1 - ,再把-号前面两个数字相减得到2

(关于逆波兰式的转换一时半会讲不清,感兴趣的可以自己去B站看对应教程)

1 + ( 2 - 1 ) <=> 1 2 1 - +   同上自己算下

1 + 2*1 - 1 <=> 1 2 1 * + - 同上自己算下

这样你就会发现,用了后缀表达式后不管是括号,还是运算顺序之类的之前看似很复杂的问题,迎刃而解

步骤大致就是:

遍历数据:

     遇到 数字:直接输出

     遇到 操作符 :

                    1. 如果 此时栈顶元素的优先级大于操作符,那么将栈中元素全部弹出并输出后,再压入操作符

                     2. 反之直接压入栈中

      遍历完数据后:将栈中元素全部弹出并输出

参考至:后缀表达式_星辰浩宇的博客-CSDN博客

(PS:之前因为我理解错了CSDN中的内容,并没有将栈中元素全部弹出,而是只弹出了栈顶元素,就因为这个BUG我修了三四天!!!)

测试:


(PS:那个**GPT自己都会算错,所以后来我拿计算器自己算了一边,统计结果就是,五个表达式,GPT错两个,我的程序除了最后一个有精度丢失的问题其他全对)



点我下载 (已有 16 次下载)

引用模块





引用支持库


源码文件名 支持库文件名 支持库标识
波兰式.e 系统核心支持库 5.7 d09f2340818511d396f6aaf844c7e325
特殊功能支持库 3.1 A512548E76954B6E92C21055517615B0


[错误报告]   上一篇:分钟时长转换为小时时长...     下一篇:枚举设备管理器中Arduino串口号...