精易论坛

标题: 【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~ [打印本页]

作者: StarAdmire    时间: 2023-8-2 12:04
标题: 【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~
本帖最后由 StarAdmire 于 2023-8-2 12:41 编辑

啰嗦:
不知不觉已经快一个月半没发源码贴了,懒人模块也已经断更不知道多久了(但群里某个人似乎铁了心想给我加工作量...在那统计希望下个版本加的东西,不过这不是今天的重点)
然后这一个月半呢,我学完了C#(这里的学完不是学懂学通!仅限于基本语法和一些高级用法),不得不说C#的执行速度是真感人,就是完惯了E后再去用vstudio多少有点不习惯
但问题不是很大,这一个月呢我一直在用C# 去重构SSC=》【预告】StarScript:一款面向于小白的脚本语言?_精易论坛 (125.la)
因为E的速度真的太...感人了
然后在写到一半的时候,遇到了那个经典问题,运算式怎么搞啊喂,要知道程序不会把1+1理解为1+1,只会理解为“1+1”
但是重写超级计算器的话肯定是不合理的,好在办法总比困难多,在群友的帮助下我顺利(个der)学会了波兰表达式,
用E语言执行成功后直接翻译为了C#
那什么是波兰表达式呢?
波兰表达式:

这里没找到什么好的帖子可以通俗点说,我就用自己的语言解释下首先,我们平时熟悉的 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错两个,我的程序除了最后一个有精度丢失的问题其他全对)





源码:


老规矩!源码回复可见!前100个回复者有概率退回2jb并多送一个~



补充内容 (2023-8-13 10:06):
更新&扩展:https://125.confly.eu.org/thread-14792365-1-1.html
作者: q1512960733    时间: 2023-8-2 14:14
学习一下
作者: q1512960733    时间: 2023-8-2 14:14
自带的计算器对比咋么样
作者: kflizcst    时间: 2023-8-2 14:26
逆波兰算法感觉对程序设计友好点
作者: wjswzj0    时间: 2023-8-2 15:04
学习一下
作者: crossdiy    时间: 2023-8-2 15:25
感谢分享
作者: webmaster999    时间: 2023-8-2 15:28
感谢分享
作者: 小白弟弟    时间: 2023-8-2 16:03
66666666666666666666666666666666666666666666666
作者: bjyulin    时间: 2023-8-2 16:14
感谢分享,支持开源
作者: 狸楚殇    时间: 2023-8-2 16:32
感谢分享!
作者: 1347379245    时间: 2023-8-2 17:16
感谢分享
作者: 910265444    时间: 2023-8-2 17:33
感谢大佬分享
作者: 910265444    时间: 2023-8-2 17:33
感谢分享!
作者: yanggeyyds    时间: 2023-8-2 17:37
感谢大佬分享!
作者: pipicool    时间: 2023-8-2 17:55
学习一下
作者: yongqiang888    时间: 2023-8-2 18:17
火钳刘明
作者: 玩神    时间: 2023-8-2 18:35
学习一下~~
作者: ax5038    时间: 2023-8-2 19:38

学习一下,感谢分享
作者: Suky    时间: 2023-8-2 20:52
好像很有意思
作者: fyh505099    时间: 2023-8-2 21:23
感谢分享 支持开源!
作者: fyh505099    时间: 2023-8-2 21:24
想混个币都那么难吗
作者: fyh505099    时间: 2023-8-2 21:25
好吧!今日不宜回复
作者: 亿万    时间: 2023-8-2 21:31

支持开源~!感谢分享
作者: 嫂子    时间: 2023-8-2 22:34
首先 那个叫逆波兰表达式 也可以叫 后缀表达式   参考 https://125.confly.eu.org/forum.php?mod=viewthread&tid=14746444
作者: 嫂子    时间: 2023-8-2 22:35
逆波兰表达式 其实是对栈结构的典型应用
作者: jiqigouer    时间: 2023-8-3 00:25
看看,学习一下
作者: qq2518    时间: 2023-8-3 04:12
学习一下。感谢分享
作者: 深圳梦    时间: 2023-8-3 08:57
        支持开源~!感谢分享
作者: 一指温柔    时间: 2023-8-3 09:02
支持开源~!感谢分享
作者: xiaoniu1230    时间: 2023-8-3 10:48
感谢分享 支持开源 !
作者: 君九    时间: 2023-8-3 12:45
感谢分享
作者: 13012145633    时间: 2023-8-3 12:46
v感谢分享
作者: hbtudou    时间: 2023-8-3 14:14
感谢分享 JB+100
作者: 笨来无一悟    时间: 2023-8-3 15:03
正好我也喜欢研究各种计算 应该是我需要的 拿走
作者: benbenyw    时间: 2023-8-3 16:13
感谢分享,函数式调用
作者: 网络注册网员    时间: 2023-8-3 17:39
感谢分享
作者: 396384183    时间: 2023-8-3 20:27
感谢分享
作者: 临安    时间: 2023-8-3 21:56
膜拜大佬!大佬牛B!
作者: 你不丑    时间: 2023-8-3 22:15
膜拜大佬!大佬牛B!
作者: xcw    时间: 2023-8-3 22:51
感谢分享
作者: onskk    时间: 2023-8-4 07:57

作者: yokie    时间: 2023-8-4 09:59
感谢发布原创作品,精易因你更精彩!
作者: 钥匙key    时间: 2023-8-4 10:05
这个表达式。有点意思。。。学习一下。。
作者: 良人旧柯梦    时间: 2023-8-4 10:08
混个jb不过分吧
作者: weihua2018    时间: 2023-8-4 11:50
不明觉厉  看看
作者: lltenable    时间: 2023-8-4 14:43
混混精币
作者: 小虎来了    时间: 2023-8-4 17:14
听说回复有奖,那就回复下
作者: Yy闲人    时间: 2023-8-5 02:29
感谢分享,很给力!~
作者: 天雨时晴    时间: 2023-8-5 13:37
有一点没看懂
作者: gulang520    时间: 2023-8-5 16:17
感谢分享,很给力!~
作者: 㠫孬嫑夯芘    时间: 2023-8-5 16:19
你我本不相识,全靠你提醒还有精币没拿
作者: 思念念    时间: 2023-8-5 16:21
回帖奖励 +3 枚 精币
作者: nihao3312    时间: 2023-8-5 16:23
WOLAI KANAKN
作者: cqcc    时间: 2023-8-5 16:33
开源精神必须支持~
作者: shuaier    时间: 2023-8-5 16:37
感谢分享,很给力!~
作者: 暗黑小魔女    时间: 2023-8-5 16:40
听说回复有奖,那就回复下
作者: 就是那个秋    时间: 2023-8-5 16:50
        感谢分享,很给力!~
作者: 冷渣渣    时间: 2023-8-5 16:51
子可以通俗点说,我就用自己的语言解释下首先,我们平时熟悉的 1+1 的运算符(操作符)是在中间的,所以就叫中缀表达式
作者: 长安往事    时间: 2023-8-5 16:58

听说回复有奖,那就回复下
作者: 狂澜辞殇    时间: 2023-8-5 17:00
听说回复有奖,那就回复下
作者: sinewtec    时间: 2023-8-5 17:01
老规矩,先回后下!!!!!!!
作者: sinewtec    时间: 2023-8-5 17:01
帮你收割了!~!
作者: 苗哥    时间: 2023-8-5 17:07
我是来给你点赞的  不是为了精币来的
作者: う网淅乄    时间: 2023-8-5 17:07
学习了
作者: 萌新苏苏    时间: 2023-8-5 17:12
666666666666666666666
作者: asd1321as23d1    时间: 2023-8-5 17:17
666666666666666666666666666666666666666666666666
作者: 从前的少年    时间: 2023-8-5 17:18
感谢分享
作者: 吃柠檬的包子    时间: 2023-8-5 17:32
KK 怎么样  
作者: Leein    时间: 2023-8-5 17:38
我币有了
作者: 撒加    时间: 2023-8-5 17:40
感谢分享 谢谢大佬
作者: FanLi    时间: 2023-8-5 17:43
看看能不能中将。
作者: a6674306    时间: 2023-8-5 17:48
6666666666666666666666666666
作者: gaoqing    时间: 2023-8-5 17:59
感谢分享,很给力
作者: w5717    时间: 2023-8-5 18:12
采纳中奖率
作者: z529417302    时间: 2023-8-5 18:15
hao              d  
作者: qq1056123185    时间: 2023-8-5 19:02
我还有机会吗?
作者: godandwoman    时间: 2023-8-5 19:09

看看能不能中将。
作者: 59hdvj    时间: 2023-8-5 19:30

作者: 59hdvj    时间: 2023-8-5 19:30
路过领币
作者: 你不丑    时间: 2023-8-5 19:45
路过领币
作者: 文西哥    时间: 2023-8-5 20:02
居然还有jb没拿走
作者: alonemask    时间: 2023-8-5 20:10
感谢分享,支持一波
作者: 深藏功舆名ゐ    时间: 2023-8-5 20:22
感谢分享,支持一波
作者: 风格EX    时间: 2023-8-5 20:42
感谢分享
作者: sbx5o4    时间: 2023-8-5 21:18

感谢分享
作者: 光影魔术    时间: 2023-8-5 21:19
感谢分享
作者: gtsing    时间: 2023-8-5 21:29
感谢分享
作者: 下弦月♩    时间: 2023-8-5 21:40
感谢分享,支持开源!~~
作者: 神话1999    时间: 2023-8-5 21:41
        开源精神必须支持~
作者: cha0s0000    时间: 2023-8-5 21:52
966666666666666
作者: liangyuhong    时间: 2023-8-5 22:00
好吧,逆波兰式以前有过研究,还是比较好搞的
作者: ﹎z°    时间: 2023-8-5 22:33
感谢分享
作者: 北冥    时间: 2023-8-5 22:44
拿币拿币拿币拿币拿币
作者: 都由我来赎    时间: 2023-8-5 23:12
来了来了感谢分享

作者: 陽陽陽    时间: 2023-8-5 23:47
基础理论全会,算法全懵逼的我
作者: woshiwangzheACE    时间: 2023-8-6 00:33
6666666666666
作者: 天天778    时间: 2023-8-6 00:54
受邀而来8888888
作者: iock    时间: 2023-8-6 17:50
拿币拿币拿币拿币拿币

作者: 飞鱼软件    时间: 2023-8-6 17:54
感谢分享 支持开源 !
作者: 今时以至遂渐开    时间: 2023-8-7 04:51
支持开源~!感谢分享




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4