早教吧 育儿知识 作业答案 考试题库 百科 知识分享

C++机器人行走问题题目描述机器人严格按照指令行走,由于是原始装置,因此只能发出以下4种指令:G:向前直走一个单位;L:左转并向前移动一个单位;R:右转并向前移动一个单位;S:

题目详情
C++机器人行走问题
【题目描述】
机器人严格按照指令行走,由于是原始装置,因此只能发出以下4种指令:G:向前直走一个单位;L:左转并向前移动一个单位;R:右转并向前移动一个单位;S:停止移动,并关闭机器人.机器人能不区分指令大小写,但对于其他任何指令机器人不作任何处理.
现在机器人打开机器人接受指令,并把它放置(0,0)坐标;默认方向向北(N),问通过接受一系列指令以后,机器人的坐标在哪里?朝向向哪里?(方向东南西北分别用ESWN表示)
输入
【输入格式】
String(长度不限的字符串)
输出
【输出格式】
(x,y),f(x,y)表示机器人的停止坐标,f表示机器人此时所面对的方向,f前有一个空格
样例输入
GRLRRLRRS
样例输出
(2,0),W
▼优质解答
答案和解析
#include
#include
#include
#include
int dir[4][2]={0,1,1,0,0,-1,-1,0};
char c[5]="NESW";
int main()
{
char s[1005];
int i,x,y,d;
while(~scanf("%s",s))
{
x=y=d=0;
for(i=0;s[i];i++)
{
s[i]=tolower(s[i]);
if(s[i]=='s')
break;
if(s[i]=='l')
d=(d+3)%4;
if(s[i]=='r')
d=(d+1)%4;
x+=dir[d][0];
y+=dir[d][1];
}
printf("(%d,%d),%c\n",x,y,c[d]);
}
return 0;
}