用c#窗口做做一个简易的计算器计算器,请问怎么实现7+2*3

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


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

要注意:这种算法在完成了 汾词结果 的扫描之后大多数情况下会在运算符栈和数符栈中留下未运算的运算符和数符,因此要依次弹出运算符和数符进行运算直到棧顶出现#为止,因此在表达式中最后不使用#结尾否则可能导致提前结束运算。

下面我们来看看用该优先级表进行运算的例子

遵循规则3見上面的“我们规定……”


该优先级表可能存在一定的局限性,大家有兴趣的话可以探讨一下


为了说明该种优先级表的局限性,我们来看一个例子
我们的表达式可能需要处理这样的情况:#cos sin 1#
该表达式中我们应该先计算sin1,再计算cos(sin 1)但根据该表的运算规则,我们会得到如下的運算步骤
sin的优先级=cos的优先级对cos进行运算
出错,因为数符栈为空cos缺少可以弹出的数符

发布了0 篇原创文章 · 获赞 47 · 访问量 33万+

VC6.0简单的整数计算功能的数学计算器源代码只可用于计算整数,带有小数点的计算会不准确运算符基本是加减乘除,界面看上去好像也不像是计算器的风格只是练习寫的,仅供学习参考适合学习用的源代码。

  • 答:这样用户可以随身携带笔記本电脑在大楼之间或在房间之间移动当计算机与无线AP或其他计算机相距较远时,随着信号的减弱或者传输速率明显下降,或者根本无法实现与AP...

我要回帖

更多关于 做一个简易的计算器 的文章

 

随机推荐