Description
小王同学在乐山一中考场的前门(0,0)处,面向正前方是一条宽阔的大道(坐标轴上看作y轴),但是他找不到考试的试场,于是一边走路一边问路,每个被问路的志愿者会告诉他一个指令(包括走路或转弯),现在请编一个程序,显示他每次走路后的坐标(转弯后不必显示坐标)。
Input
第一行一个数n,表示有n个指令 接下来n行每行一个指令,每个指令是“left” 或“right”或数字。
Output
(有m个走路的指令)共m行,每一行一个坐标,表示走完后的坐标。
如果只是原地转弯,从来不走动,则只输出“(0,0)”.!!
6 2 left 2 right right 3
(0,2) (-2,2) (1,2)
我自己写的代码有点长,所以借鉴了别人的代码
#include<cstdio>
int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
int main()
{
long long x=0,y=0;
int d=0;
int n;
scanf("%d",&n);
bool f=0;
while(n--)
{
char s[20];
scanf("%s",s);
if(s[0]=='l')
{
d+=4;
d--;
d%=4;
}
else if(s[0]=='r')
{
d++;
d%=4;
}
else
{
long long tmp;
sscanf(s,"%lld",&tmp);
x+=tmp*dir[d][0];
y+=tmp*dir[d][1];
printf("(%lld,%lld)\n",x,y);
f=1;
}
}
if(!f) printf("(0,0)");
return 0;
}