一个较难的表达式问题?(50分)

  • 主题发起人 主题发起人 _ccc
  • 开始时间 开始时间
C

_ccc

Unregistered / Unconfirmed
GUEST, unregistred user!
一个较难的表达式问题?
已知表达式:(x>a+b*15) and (x<c*20-d)
给变量赋值:a:=10,b:=2,c:=3,d:=10
求满足条件的X值的区间
 
a+b*15 < x < c*20-d
只要计算出两边的值,如果左边<右边,则区间=(左边,右边),否则为空
怎么计算两边的值用全文检索一下就有了
 
关键问题是如何解析出左边和右边的表达式,有几千个这样的表达式,不可能改为只用用程序解析出来
 
//已知表达式:(x>a+b*15) and (x<c*20-d)
//给变量赋值:a:=10,b:=2,c:=3,d:=10
可以用SQL来解析的
先将a+b*15与c*20-d中的ABCD换成字串,s1:='10+2*15',s2:='3*20-10'
再用adoquery.sql.text:=' select ' +s1+','+s2
再从adoquery中读出就可以了
 
说到底还是表达式求值呀,只要分别求出上下限不就行了。
至于表达式求值的方法,有一些专门探讨的帖子的。
 
不知道高手有啥高招,我有一土方:
这个问题应该不难在如何表达式求值,而应该先在字符串中,一个字符字符的读各判断,解析出“>”和“<”等符号的位置和两边的表达式,再求值上下限就不难了,表达式可用ADOQuery或相关控件即可。
 
多人接受答案了。
 
后退
顶部