大家好,怎么实现”计算器的优先级别的计算方法”?

深山老翁 2003-11-24 06:57:03
在WIN98配有一个计算器,其中科学型的有个优先级别:如1+2*3=7,但我不知道它什么实现?请大家帮帮忙,非常感谢!
...全文
139 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
silverblade 2003-11-25
  • 打赏
  • 举报
回复
有个很简单的办法
把用户的输入全记录下来
形成“1+2-3*4/5”这样的字符串
然后用一个MICROSOFT SCRIPT CONTROL这个控件
它可以自动帮你算表达式结果
连带括号的都可以帮你算出来
多好
深山老翁 2003-11-25
  • 打赏
  • 举报
回复
我不想要实现那么复杂,只是"* / + - "的先后顺序而已,希望各个朋友能帮助一下
longki 2003-11-25
  • 打赏
  • 举报
回复

问者可以看看有关算法导论方面的书,我们生活中一般都是中缀运算规则,而要让计算机接受的话,必须把它画成后缀还是前缀运算,不记得了,看看书吧,算法导论都有这方面的算法的!
zsx108 2003-11-24
  • 打赏
  • 举报
回复
其实VB本身就有运算控件
zsx108 2003-11-24
  • 打赏
  • 举报
回复
概述:

要写出句法分析器表达式的值,必需将表达式进行分解。例如:A*B-(W+10)/2,由A、B、W、10、两个圆括号以及运算符+、-、*、/组成。一般情况下,要单独用一个例程逐个返回表达式的诸项目。该例程还要能够过跳过空格和知道何时到达表达式的末端。

从表达式中分解出来的各段,暂命名为“单数式”,建立一个函数用于分解每个表达式,分解有三种类型:分解括号、分解变量、分解运算优先(^平方优先 *、/优先、+、-优先)。

大致流程:

例式中,A、B、W为变量。假设要分解一个不带变量的表达式:
10*5-(8+2)/2

第一部,先分解括号
10*5-10/2
第二,分解各段,存于数组变量中

Code(0) = "*":Code(1) = "-":Code(2)="/" 这是用于存运算符号
Num(0) = "10":Num(1) = "5":Num(2)="10":Num(3)="2"

然后根据运算等级:

之前要定义一个变量,gCode(5)。gCode(0) = "^":gCode(1)="/":gCode(2) = "*".....,定议各运算符及它的运算先后

for i=0 to 5

For j=0 to 2

If Code(j) = gCode(i) then

''随着i的数值,运算先后。

如下开示运算,分解表达式


endif

next j
Next i




直分至无符号为止,即运算结果。
深山老翁 2003-11-24
  • 打赏
  • 举报
回复
我说的就是用VB实现呀
rainstormmaster 2003-11-24
  • 打赏
  • 举报
回复
好象不用刻意实现这个吧,vb替你实现了

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧