家庭仿真机器人之任务场景截取

#include "class.h"
void dealwithtask(string task);
int main()
{
string task1="(:task (open X) (:cond (sort X microwave)))",
  task2="(:task (takeout X Y) (:cond (sort X cup) (color X red) (sort Y microwave)))",
  task3="(:task (takeout X Y) (:cond (sort X book) (sort Y cupboard))) ",
  task4="(:task (takeout X Y) (:cond (sort X can) (color X yellow) (sort Y cupboard))) ";
dealwithtask(task2);
// dealwithtask(task1);
// dealwithtask(task4);
// dealwithtask(task3);


return 0;
}
void dealwithtask(string task)
{
int first,end,i,j,j1,k,l,count=0;
string str,str1,str2,str3;
/************************************************************************************/
if(task.find("open"     )!=-1)  first = task.find("open");//open (A) A:container
if(task.find("close"    )!=-1)  first = task.find("close");//close(B)B:container
if(task.find("takeout"  )!=-1)  first = task.find("takeout");//takeout(A,B)
if(task.find("putin"    )!=-1) first = task.find("putin");//putin(A,B)
if(task.find("move"     )!=-1)  first = task.find("move");//move(A)
if(task.find("pickup"   )!=-1)  first = task.find("pickup");//pickup(A)
if(task.find("putdown"  )!=-1)  first = task.find("putdown");//putdown(A)
if(task.find("toplate"  )!=-1)  first = task.find("toplate");//toplate(A)
if(task.find("fromplate")!=-1) first = task.find("fromplate");//fromplate(A)
/********************************************************************************/
if(task.find(")))"    )!=-1)  end = task.find(")))");
str = task.substr(first-1,end-first+2); //update task
l  =str.length();
/************************第一轮截取*************************************************/
i = str.find("(");
j = str.find(" ");
k = str.find(")");
while(k<str.length())
    {
j1 = str.find(' ', j + 1);
str1 = str.substr(i + 1, j - i - 1);
if (j1>j&&j1<k)
{
str2 = str.substr(j + 1, j1 - j - 1);
str3 = str.substr(j1 + 1, k - j1 - 1);
}
if (j1>k || j1 == -1)
{
str2 = str.substr(j + 1, k - j - 1);
str3 = "**";
}
i = str.find('(', k);
j = str.find(' ', i);
k = str.find(')', i);
/*******************************************************************************/
cout<<str<<endl;
cout<<str1<<"\t\t"
<<str2<<"\t"
<<str3<<endl;
cout<<first<<endl<<endl<<endl;
/*********************************消去cond*** **********************************/
if(str.find("cond")!=-1)
str=str.substr(str.find("cond")+5);
+ cout<<str<<endl;
l  =str.length();
// break;
 }

}

此程序出现逻辑错误的原因是因为循环体内i,j,k的值没有随着字符串的更新而更新

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
·1.内容简介: --------------------------------------------------------------- 这是一个压缩包,里面是5个文件是东南大学Robocup3D仿真比赛的源代码。对于参加Robocup比赛绝对有帮助。学习别人如何组织代码,这样可以在一个更高的起点进行编程。 建议,对Robocup机器人比赛感兴趣或者东南大学以及其他高校的参赛同学下载学习。否则,会感觉我的文件都不知道什么东西。 --------------------------------------------------------------- ·2.资源使用方法 suse Linux 环境下编译运行,注意,必须安装好开发环境和仿真环境。 --------------------------------------------------------------- ·3.文件组成形式 格式:tar.gz 源代码,在src文件夹里 --------------------------------------------------------------- ·4. wogeguaiguai的附言: 1.我的其他数学建模精华资源也欢迎您下载,大学生基本上都听过这个比赛吧,这个比赛比较有意思,而且获奖比例高。我的资料都是非常好的准备比赛要用的资料。我比赛结束之后,这些资料就不用啦,分享给大家!俺一年的搜索资源,同学们一朝即可获得! 2.下载本文件后,您可以获得所有信息,不必再零散下载,给您带来很大的方便。 3.10个资源分,绝对物超所值。评论后,您就可以获得11个资源分,欢迎您评论! --------------------------------------------------------------- ·5.如有问题,请在此留言,谢谢。 --------------------------------------------------------------- ·6.上传时间 2010-2-24-night

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值