手头上有个问题,就是写一个关于“(”“)”“+”“-”“*”“/”的算法,要求是写个函数,让这个函数计算出某个带有以上运算符的式子;例如,式子为((a+b)*c)+(c+d)*c ,通过函数类似count(s:string;value:array of string)计算出式子结果,其中s为具体的式子,value为变量的值。
不知道网上有没有现成的这样的函数,,很急啊,望高手们帮忙!!

解决方案 »

  1.   

    同一个问题发两遍?
    那我就回两遍如果你的程序能连数据库的话,用一个select语句就可以得到结果了
    比如
    s:='23*4+15-26';
    adoquery1.sql.add('select '+s);
    然后open
    showmessage(adoquery1.fields[0].asstring)看看就知道了
    给分吧,哈哈
      

  2.   

    网上算法太多了,
    找一下后缀表达式求值,然后根据算法自己写吧。并不难。另外,如果要表达式有语法检查的功能就要有表达式的产生式,再根据产生式进行语法分析。
    表达式的产生式给你算了,接下来你自己搞定吧:
    E -> T+E | T-E | T
    T -> F*T | F/T | F
    F -> (E) | i
      

  3.   

    http://tansuo.51.net/article/showarticle.php?aid=4
      

  4.   

    感谢 yangliu(逍遥游)!!可是我不知道怎么给分,谁能告诉我?