首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么判断一个字符串是否是合法的数学表达式

2012-02-09 
如何判断一个字符串是否是合法的数学表达式Thereisastringwhichonlycontain+,-,*,/,0-9(and).Writeapieceo

如何判断一个字符串是否是合法的数学表达式
There   is   a   string   which   only   contain   +,-,*,/,0-9(and).   Write   a   piece   of   code   to   tell   if   it   is   a   valid   arithemetic   expressin   .

bool   IsValidExpression(char   *   str)
{
}  



[解决办法]
这个问题大了。
lex/yacc搞这个比较在行。
[解决办法]
这个主要是要细心,考虑到一个合法数学表达式的要求
1、等号左边合法
2、等号右边合法
当然,前提是只有一个 "= "
[解决办法]
先检查是否有非运算字符
用栈检查括号和符号的位置。还有必要符号检查。
[解决办法]
楼主学了编译原理就能明白,写个词法分析器就知道了
[解决办法]
刚刚学的数据结构,习题中有这个
先判断括号是否匹配,用一个栈来判断,左括号进栈,遇右括号就将栈顶的元素出栈,判断最后栈是否为空,是则匹配
然后将遍历,求操作数的个数a,还有操作符的和b,由于都是二元操作符,根据二叉树的知识有公式a=b+1,就可以判断是否正确了
应该没什么问题,我写的表达式求值程序的第一部分就是这样的思路,运行正常
[解决办法]
先从括号找,。。。
[解决办法]
数据结构书上说用栈检验括号的匹配正确与否
其它各种非法很容易检验
[解决办法]
利用堆栈解决问题哈

热点排行