如何计算字符串表示的公式,十万火急!(200分)

  • 主题发起人 主题发起人 wyton2000
  • 开始时间 开始时间
W

wyton2000

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一字符串型字段formula(其值可能为'(a+b)/c','a+d/f',等等)其中a,b,c为字段名,
如何得到该公式计算的结果。注意formula也是一字段。
 
一、寻一个支持变量计算的表达式分析控件。
RENATE SCHAAF 写的 parser10.zip 满足要求。
http://www.csdn.net/dev/Delphi/vcl/vcltools/parser10.zip
二、自己改装成支持分步计算的,用分号或逗号分隔。
a=3; b=a; c=2; (a+b)/c
三、同字段关联。


 
学过编译原理么?
自己写词法分析器和语法分析器来搞定它。
 
很简单啊。
《数据结构》课本上在讲堆栈时有一个表达式计算的例子,不过你这个在套用之前必须
做一次分词的工作。就是编译原理的词法分析,很简单的。
 
sql 语句就能解决问题(如果表达式不是太复杂的话)
'select '+query['formula']+' as result from table1 where 唯一条件'
假设formula=(a+b)/c
则sql语句为:
'select (a+b)/c as result from table1 where 唯一条件'
 
还是用parser控件省事
 
hhzh426 大虾真会想办法。
 
CROCO的办法真好,我已经喜欢这个控件了!
 
对了,用parser10.zip;
很方便的,干吗还要自己编写,即累有不讨好。
如果要练练手,自己写写到也很好的
 
昨天下了个parser,可惜没有源码。
 
我有parser源码
 
难道写sql语句就很难吗?动不动就用第三方控件! :(
 
先用具体数值替换表达式中的字母,然后用递归算法就可以搞定了,
不过要注意先乘除后加减的问题.
 
类似的sql方法早就提出,
请查看相关问题
 
多人接受答案了。
 
我倒是将一个paser控件给加了一些功能,比如扩充数学函数、识别希腊字母。
 
后退
顶部