两个表 1。基本参数表 2。表达式表
表结构如下:
1.基本参数表:base
baseid      string   基本参数编码
basename    string   基本参数名称
basevalue   double   基本参数数值
2.表达式表:exprisstion
expid       string   表达式编码
expname     string   表达式名称
表中数据如下
base表
baseid                 basename           basevalue
  a                      长                   2
  b                      宽                   12
  c                      ds                   43
exprisstion  表
expid                  expname          
  fx                     a*b+2              
  wx                     fx*2+a+c*b
  tx                     wx+fx+(c*a)*2我的问题是    如果我输入tx则样得到这样的值   
((a*b+2)*2+a+c*b)+(a*b+2)+(c*a)*2
就是最后表达式全部要化成基本参数编码。分不够还可以加,这一提问我发两帖。解决我给200分。 
http://expert.csdn.net/Expert/topic/1884/1884178.xml?temp=.16

解决方案 »

  1.   

    告訴你一個思路吧﹕
    1﹑先得出tx=wx+fx+(c*a)*2,這個很容易吧。
    2﹑遍歷exprisstion  表﹐
      將tx中包含的字符串全部替換(如果存在)﹐直到找不到為止。
      

  2.   

    用递归
    做一个函数, 参数是字符串, 返回替换后的字符串
    拆分参数
    根据拆分后的 expid 从 exprisstion 表中 find 出匹配记录
    用 expname    替换 expid
    返回 expname递归调用这个函数
      

  3.   

    还要解决的就是首先有脱括号,然后在加括号
    也比较好实现。然后再用楼上两位朋友的方法我想就差不多了
    具体的替换函数我有,如果需要,可以mail给你
      

  4.   

    to :fengjn
    我的MAIL是[email protected]
      

  5.   

    首先查表将tx = wx+fx+(c*a)*2 化为((a*b+2)*2+a+c*b)+(a*b+2)+(c*a)*2,这应该不难。再将表达式转换为运算符后置,这样就可以去掉括号,有专门的运算符后置算法,记得以前版的程序员高级程序员资料里提到算法,网上可以下载到。
    余下的运用查数据表即可。