若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1313: 机器人行走

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,090

题目描述

某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字)。

    例如,我们可以对小车输入如下的指令:

    15L10R5LRR10R20

    则,小车先直行15厘米,左转,再走10厘米,再右转,…

    不难看出,对于此指令串,小车又回到了出发地。

    你的任务是:编写程序,由用户输入指令,程序输出每条指令执行后小车位置与指令执行前小车位置的直线距离。

输入

用户先输入一个整数n(n<100),表示接下来将有n条指令。

    接下来输入n条指令。每条指令只由L、R和数字组成(数字是0~100之间的整数)

    每条指令的长度不超过256个字符。

输出

程序则输出n行结果。

    每条结果表示小车执行相应的指令前后位置的直线距离。要求四舍五入到小数后2位。

样例输入

5
L100R50R10
3LLL5RR4L12
LL
100R
5L5L5L5

样例输出

102.96
9.06
0.00
100.00
0.00

参考代码

#include<stdio.h>
#include<math.h>
double fun(char c[]) 
{
    double d[5]={0};
    int i=0,f,flag=1;
    while(c[i]!='')
    {
        d[0]=0;
        if(c[i]=='L')
        flag+=1;
        else if(c[i]=='R')
        flag-=1;
        if(flag==5)
        flag=1;
        else if(flag==0)
        flag=4;
        f=0;        
        while(c[i]>='0'&&c[i]<='9')        
        {            
        d[0]+=c[i]-48;        
        d[0]*=10;            
        i++;f=1;        
        }if(f!=1)i++;    
        d[0]=d[0]/10;    
        d[flag]+=d[0];    
        }    
        return sqrt((d[1]-d[3])*(d[1]-d[3])+(d[4]-d[2])*(d[4]-d[2]));}
int main()
{    
        char c[257];    
        int n;    
        scanf("%d",&n);    
        for(int i=0;i<n;i++)    
        {        
        scanf("%s",c);
        printf("%.2lfn",fun(c));    
        }    
        return 0;
}

解析

暂无

hustoj

发表评论 取消回复

电子邮件地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Dreams孤独患者 原站点 Skip
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist