开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 8191|回复: 156
收起左侧

[易源码分享] 【首发】【波兰式】【C#&E】关于超级计算器的另一种思路~

[复制链接]
结帖率:97% (36/37)
发表于 2023-8-2 12:04:57 | 显示全部楼层 |阅读模式   江西省南昌市
分享源码
界面截图:
是否带模块: 纯源码
备注说明: -
本帖最后由 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错两个,我的程序除了最后一个有精度丢失的问题其他全对) 1.png
3.png
2.png
4.png
5.png

源码:


老规矩!源码回复可见!前100个回复者有概率退回2jb并多送一个~
内涵C#与E两个版本的,然后关于C#的我直接把vstudio的工程文件给打包进去了~
(别问,问就是不会提取c#源码文件)
此外源码无调用模块
波兰式.rar (271.86 KB, 下载次数: 31)

点评

当时我是先接触的逆波兰式再学的数据结构,看到栈一知半解,想要深入了解这个去学学数据结构吧,学会数据结构再去写程序就能优化很多东西了   广东省惠州市  发表于 2023-8-12 09:26
我记得逆波兰表达式是用栈的机制   福建省宁德市  发表于 2023-8-7 15:14

评分

参与人数 6好评 +2 精币 +110 收起 理由
pj小黑屋 + 1 感谢分享,很给力!~
※逍遥游※ + 1 感谢分享,很给力!~
Godsteal + 100 感谢分享,很给力!~
光影魔术 + 2 开源精神必须支持~
易语言资源网 + 1 + 3 开源精神必须支持~
Suky + 1 + 3 感谢分享,很给力!~

查看全部评分


本帖被以下淘专辑推荐:

结帖率:100% (1/1)

签到天数: 16 天

发表于 2024-6-3 11:23:38 | 显示全部楼层   四川省成都市
大神膜拜中
回复 支持 反对

使用道具 举报

发表于 2024-5-20 13:35:45 | 显示全部楼层   山东省青岛市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

签到天数: 20 天

发表于 2024-1-16 16:26:34 | 显示全部楼层   湖北省武汉市
感谢分享
回复 支持 反对

使用道具 举报

结帖率:84% (21/25)

签到天数: 16 天

发表于 2023-10-4 06:36:49 | 显示全部楼层   湖北省襄阳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:98% (44/45)

签到天数: 11 天

发表于 2023-9-6 10:46:43 | 显示全部楼层   河北省唐山市
有人叫我来拿币
回复 支持 反对

使用道具 举报

发表于 2023-8-25 11:57:02 | 显示全部楼层   河南省安阳市
感谢分享,很给力!~
回复 支持 反对

使用道具 举报

发表于 2023-8-18 15:16:30 | 显示全部楼层   广西壮族自治区桂林市
支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:100% (27/27)

签到天数: 5 天

发表于 2023-8-15 10:23:32 | 显示全部楼层   香港特别行政区*
        支持开源~!感谢分享
回复 支持 反对

使用道具 举报

结帖率:98% (82/84)

签到天数: 22 天

发表于 2023-8-14 16:23:39 | 显示全部楼层   广东省深圳市
        感谢分享,很给力!~
回复 支持 反对

使用道具 举报

结帖率:86% (119/138)

签到天数: 14 天

发表于 2023-8-14 13:43:16 | 显示全部楼层   广东省惠州市
我还是觉得一个等号的好理解。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表