免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2529 | 回复: 4
打印 上一主题 下一主题

[C++] 欲问:C++的话,组合查找怎么实现的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-10 21:01 |只看该作者 |倒序浏览
本帖最后由 tzjotzj 于 2010-06-14 13:01 编辑

请问CU各位达人:

有什么好办法实现这样的功能:

从命令行获取一个形如这样的表达式(这个表达式是一个字符串):(A or B) and C,就是一条由and、 or和括号组合起来的表达式;
则现在要如何实现这样的表达式:( F(A) or F(B) ) and F(C),其中F()是一个已知的返回bool值的函数;

就是说,写一个函数Fun(),得到这样的结果:
Fun( (A or B) and C )
{
      return ( F(A) || F(B)) && F(C) );
}
这个F能如何实现?

表达能力有限,举个例子:
F(A)表示一个查找A是否存在的函数。
若给定表达式"(A or B) and C”,则Fun( (A or B) and C )的功能是对"A或B存在,且C存在"的查找,怎么实现Fun(),给个思路或意见就行?

我想问怎么才能把形如(A or B) and C这样表达式转换成 ( F(A) || F(B)) && F(C) )这样表达式?

可能表达有点模糊,其实就是个组合查找的实现。。。

论坛徽章:
0
2 [报告]
发表于 2010-06-10 21:06 |只看该作者
表达式求值。需要你有《编译原理》的基础知识。告诉你一个取巧的办法吧:内嵌LUA脚本语言,利用LUA脚本引擎求值,再传给C就行了。当然输入的字符串要符合LUA语法,你上面提到的就正好符合。

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
3 [报告]
发表于 2010-06-14 13:16 |只看该作者
回复  没本


    感谢ls的没本兄,我按照表达式求值的方法实现了这样的功能,还是用栈实现的表达式求值 ...
tzjotzj 发表于 2010-06-14 12:59



    找到空格或者括号就认为是一个子串

论坛徽章:
0
4 [报告]
发表于 2010-06-14 20:14 |只看该作者
回复 3# tzjotzj


    如果熟悉regex可以用,否则自己判断处理也不复杂。

论坛徽章:
0
5 [报告]
发表于 2010-06-14 21:41 |只看该作者
yacc
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP