| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2742 人关注过本帖
标题:求计算算式字符串的算法!
只看楼主 加入收藏
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:9 
求计算算式字符串的算法!
求能计算诸如"1+2-3/3-5*5......"等不定长算式字符串的数学结果的算法。
说明:没有括号,只有加减乘除法,所有的数字视为double型来计算!
当然若能提供能计算有括号算式的结果的算法更好了!小弟在此先谢谢大家了!
搜索更多相关主题的帖子: 字符串 
2011-03-07 11:59
yehuanfeng
Rank: 4
等 级:业余侠客
帖 子:75
专家分:201
注 册:2010-8-3
收藏
得分:25 
提供以下思路啊:
将字符串进行分割,具体如下:
    1、以一对加号或者一加号一减号为边界,提取他们之间的内容。例如1+2*4/6-7 ,这时候就将2*4/6提取出来,还有一点就是把2*4/6前面的“+”也提取出来,以便最后运算,所以这样下去的话,就把一长串字符分割成为若干个小字符串以及这些小字符串前面的运算符号(+或者-)
当然字符串的开头和结尾(不满足前面说的以一对加号或者一加号一减号为边界)两个数进行特殊处理就可以了。
    2、接下来就是对若干小字符串的运算,这个应该比较简单了,比如2*4/6可以从左到右的顺序解析进行运算,相信很快就可以搞定
    3、最后就是把第2步算出来的结果结合第1步中提取出来的(+或者-)就能进行简单计算了

至于小括号的话,应该是我这个方法的延伸,只要将小括号内的东西看成这里的字符串就行了,我们可以先对它进行计算的!

  就说这些吧,具体LZ觉得可行的话就编编看,不行请提出你的想法,我们可以一起探讨
2011-03-07 18:20
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
收藏
得分:15 
string str="1+2-3/3-5*5+3*3*(3-2)/2+1.5*2";
string resultStr =new DataTable().Compute(str,"").ToString();

站在春哥的肩膀上
2011-03-08 11:16
xydddaxia
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:33
帖 子:466
专家分:2307
注 册:2009-3-20
收藏
得分:0 
select 1+2-3/3-5*5+3*3*(3-2)/2+1.5*2

站在春哥的肩膀上
2011-03-08 11:18
yehuanfeng
Rank: 4
等 级:业余侠客
帖 子:75
专家分:201
注 册:2010-8-3
收藏
得分:10 
回复 4楼 xydddaxia
这样操作就能将字符串解析出来啊,呵呵,没用过,回去试试看看,不过LZ好像要找什么算法
2011-03-08 12:36
yehuanfeng
Rank: 4
等 级:业余侠客
帖 子:75
专家分:201
注 册:2010-8-3
收藏
得分:0 
回复 5楼 yehuanfeng
哈哈,试了一下,不错不错,学习了
2011-03-08 12:43
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
我怎么不懂啊!各位有详细点的代码吗?我还没有接触到数据库的东西呢,正在学习中!

   唯实惟新 至诚致志
2011-03-08 14:26
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
回复 2楼 yehuanfeng
你说的我也试着做过了,不行啊!逻辑太难了!!!!

   唯实惟新 至诚致志
2011-03-08 14:41
yehuanfeng
Rank: 4
等 级:业余侠客
帖 子:75
专家分:201
注 册:2010-8-3
收藏
得分:0 
LZ想知道算法还是想要解决问题?如果想解决问题的话,3楼的不错,直接拿来用就行了
2011-03-08 16:27
qq1023569223
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
注 册:2010-12-22
收藏
得分:0 
string resultStr =new DataTable().Compute(str,"").ToString(); //看不懂这句?
我是要解决问题,可是不知道这个是什么意思啊!

   唯实惟新 至诚致志
2011-03-08 16:37
快速回复:求计算算式字符串的算法!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021687 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved