某少年宮引進了一批機器人小車。可以接受預先輸入的指令,按指令行動。小車的基本動作很簡單,只有3種:左轉(記爲L),右轉(記爲R),向前走若干釐米(直接記數字)。
*/
#include
#include
using namespace std;
#define N 100 //最多的指令數
#define M 256 //每條指令的字符最多總數
{
int num;
double m=0.00;
char a[N][M];
int count[M],q=0,t=0;
cin>>num;//輸入指令條數
//輸入每條指令
for(int x=0;x<num;x++)
{
cin>>a[x];
}
//初始化計數器和運算
for(int y=0;y<num;y++)
{
count[y]=0;
for(int s=0;s<M-1;s++)
{
if(a[y][s]!='\0')
count[y]=count[y]+1;
else
break;
}
}
for(int i=0;i<num;i++)
{
//初始化方向
double b[6][2];
b[0][0]=0.00;b[0][1]=1.00;//上
b[1][0]=1.00;b[1][1]=0.00;//右
b[2][0]=0.00;b[2][1]=-1.00;//下
b[3][0]=-1.00;b[3][1]=0.00;//左
b[4][0]=0.00;b[4][1]=0.00;//中間轉換暫存
b[5][0]=0.00;b[5][1]=0.00;//最終座標存儲
//運算終結點座標
for(int j=0;j<count[i]+1;j++)
{
if(a[i][j]=='R'||a[i][j]=='L'||a[i][j]=='\0')
{
if(a[i][j-1]>='0'&&a[i][j-1]<='9')
{
m=(int)a[i][j-1]-48;
if(a[i][j-2]>='0'&&a[i][j-2]<='9')
{
m+=((int)a[i][j-2]-48)*10;
if(a[i][j-3]>'0'&&a[i][j-3]<='9')
{
m+=((int)a[i][j-3]-48)*100;
}
}
b[5][0]+=b[0][0]*m;
b[5][1]+=b[0][1]*m;
}
}
//轉換方向
if(a[i][j]=='R')
{
b[4][0]=b[0][0];b[4][1]=b[0][1];
b[0][0]=b[1][0];b[0][1]=b[1][1];
b[1][0]=b[2][0];b[1][1]=b[2][1];
b[2][0]=b[3][0];b[2][1]=b[3][1];
b[3][0]=b[4][0];b[3][1]=b[4][1];
b[4][0]=0;b[4][1]=0;
}
{
b[4][0]=b[0][0];b[4][1]=b[0][1];
b[0][0]=b[3][0];b[0][1]=b[3][1];
b[3][0]=b[2][0];b[3][1]=b[2][1];
b[2][0]=b[1][0];b[2][1]=b[1][1];
b[1][0]=b[4][0];b[1][1]=b[4][1];
b[4][0]=0;b[4][1]=0;
}
}
printf("%.2f",sqrt(b[5][0]*b[5][0]+b[5][1]*b[5][1]));
}
}