滿足變態要求,如何根據 3+2*6/8 類似的運算式子算出結果. 大家幫忙.(100分)

  • 主题发起人 主题发起人 zjwork
  • 开始时间 开始时间
Z

zjwork

Unregistered / Unconfirmed
GUEST, unregistred user!
滿足變態要求,如何根據 3+2*6/8 類似的運算式子算出結果. 大家幫忙.
我受不了了
 
这有什么变态,论坛里这样的帖子多的很.
方法有三种:
1.采用表达式组件(如systools就有)
2.用脚本语言进行计算
3.用sql语句进行计算.
 
只要你在网上随便找到个Parser控件就可以交差了。
 
zhtx,Another_eYes:
麻煩你給個例子好嗎.并且要能檢查此運算式是否合法.感謝你
 
zhtx:
这有什么变态,论坛里这样的帖子多的很.
方法有三种:
1.采用表达式组件(如systools就有)
2.用脚本语言进行计算
3.用sql语句进行计算.
具體怎么做呢.幫幫忙.
 
1.下载systools,里面有个TStExpression控件,可以直接计算表达式,具体你看demo
2.比较复杂就不说了
3.select 3+2*6/8 as test from ...
 
Active 控件 script control
win2000自带
ScriptControl1.Eval('3+2*6/8'); 即可
 
写成 sql 表达式,是一种不错的方法。
但有点杀鸡用宰牛刀。
 
http://www.efg2.com/Lab/Library/Delphi/MathFunctions/Parsers.htm
http://www.torry.net/expressions.htm
 
可以应该是可以,只能限制使用这些运算符,不要使用括号之类的

还有就是如果运行不合法,结果如何算?

比如什么6++8/8*3-2,这样的能给出答案吗?

如果排除这些因素,我愿意试试…
 
我是用的遍历所有字符然后自己写一一排除,
不用控件
 
jsxjd,
写成 sql 表达式,是一种不错的方法。
但有点杀鸡用宰牛刀。
但如何將運算表達式傳入sql中及如何檢查資料的合法性
感謝各位.小弟在此謝過了,并躬請繼續發言

 
态度好不是懒惰的理由
 
看数据结构书,用堆栈解析表达试的例子好象符合你的要求啊!
 
千中元:
态度好不是懒惰的理由
說得有理.只是因為現在工期緊,并且以前沒有作個這方面的考慮.
感覺難以下手.還請不吝指教.

 
2 zjwork,
不好意思,刚才说的可能有些不妥当。还是很勤奋的[:)]
我的意思是你可以通过上面各位网友的回答,或者在大富翁中全文搜索找到很多种方法,
选一种方法遇到具体问题的时候再问比较好。这样想帮你的诸位网友也不至于感到没法详细
解释给你。
 
后退
顶部