c#实现科学计算器 设计篇之优先级表的另一种实现方案

本文介绍了使用C#实现科学计算器的设计,重点在于一种优先级表的实现方案。规则包括比较运算符栈顶与当前运算符的优先级,处理括号,并在分词结束后处理剩余的运算符和数值。举例说明了1*2+(9-4)/5的运算过程,同时也指出该算法可能存在局限性,引发对更复杂表达式处理的思考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文是针对 设计篇之优先级表设计 一文写的,主要阐述优先级表设计的另外一种思路,当然这种思路可能是不正确的。

在这种设计中,优先级被划分为7个级别:P0,P1,P2,P3,P4,P5,P6,P7,P0优先级最低,P7最高。
优先级 运算符
P0 # ( 
P1 + -
P2 * / %
P3 保留
P4 sin,cos,tg,ctg,asin,acos,atg,actg
P5 lg,log,ln
P6 pow
P7 保留

我们规定:
1. 如果运算符栈顶的运算符优先级高于或等于当前读入的运算符优先级,则弹出栈顶运算符,同时从数栈弹出相应数量的操作数进行运算,将运算结果压入数栈,最后把当前运算符压入运算符栈。
2. 如果运算符栈顶的运算符优先级低于当前读入的运算符的优先级,则直接压入当前运算符到运算符栈。
3. 如果当前运算符为' ) ',则弹出运算符栈中的运算符进行相应的运算,直到弹出的运算符是' ( ' 为止。
4. 如果当前运算符为' ( ',则直接把' ( '压入运算符栈

要注意:这种算法在完成了 分词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值