在WIN98配有一个计算器,其中科学型的有个优先级别:如1+2*3=7,但我不知道它什么实现?请大家帮帮忙,非常感谢!

解决方案 »

  1.   

    概述:要写出句法分析器表达式的值,必需将表达式进行分解。例如: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 5For j=0 to 2If Code(j) = gCode(i) then''随着i的数值,运算先后。如下开示运算,分解表达式
    endifnext j
    Next i
    直分至无符号为止,即运算结果。
      

  2.   

    有个很简单的办法
    把用户的输入全记录下来
    形成“1+2-3*4/5”这样的字符串
    然后用一个MICROSOFT SCRIPT CONTROL这个控件
    它可以自动帮你算表达式结果
    连带括号的都可以帮你算出来
    多好