• 坐标移动


    题目描述

    开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

    输入:

    合法坐标为A(或者D或者W或者S) + 数字(两位以内)

    坐标之间以;分隔。

    非法坐标点需要进行丢弃。如AA10;  A1A;  $%$;  YAD; 等。

    下面是一个简单的例子 如:

    A10;S20;W10;D30;X;A1A;B10A11;;A10;

    处理过程:

    起点(0,0)

    +   A10   =  (-10,0)

    +   S20   =  (-10,-20)

    +   W10  =  (-10,-10)

    +   D30  =  (20,-10)

    +   x    =  无效

    +   A1A   =  无效 

    +   B10A11   =  无效

    +  一个空 不影响

    +   A10  =  (10,-10)

    结果 (10, -10)

     输入描述:

    一行字符串

    输出描述:

    最终坐标,以,分隔

    输入例子:
    A10;S20;W10;D30;X;A1A;B10A11;;A10;
    输出例子:
    10,-10
     1 #include<stdafx.h>
     2 #include<iostream>
     3 #include<string>
     4 
     5 using namespace std;
     6 
     7 int main(void)
     8 {
     9     string str,temp;
    10 
    11     while (getline(cin, str))
    12     {
    13         int X = 0, Y = 0, value = 0, pos = 0;
    14 
    15         while ((pos = str.find_first_of(";")) != str.npos)
    16         {
    17             temp = str.substr(0, pos);
    18             str = str.substr(pos + 1, str.size());
    19 
    20             if (temp.size() <= 1)
    21             {
    22                 continue;
    23             }
    24             else if (temp.size() == 2)
    25             {
    26                 if ((temp[1] - '0') >= 0 && (temp[1] - '0') <= 9)
    27                 {
    28                     value = temp[1] - '0';
    29                 }
    30                 else
    31                 {
    32                     continue;
    33                 }
    34                 if (temp[0] == 'A')
    35                 {
    36                     X -= value;
    37                 }
    38                 else if (temp[0] == 'D')
    39                 {
    40                     X += value;
    41                 }
    42                 else if (temp[0] == 'S')
    43                 {
    44                     Y -= value;
    45                 }
    46                 else if (temp[0] == 'W')
    47                 {
    48                     Y += value;
    49                 }
    50                 else
    51                 {
    52                     continue;
    53                 }
    54             }
    55             else if (temp.size() == 3)
    56             {
    57                 if ((temp[1] - '0') >= 0 && (temp[1] - '0') <= 9 && (temp[2] - '0') >= 0 && (temp[2] - '0') <= 9)
    58                 {
    59                     value = 10 * (temp[1] - '0') + (temp[2] - '0');
    60                 }
    61                 else
    62                 {
    63                     continue;
    64                 }
    65                 if (temp[0] == 'A')
    66                 {
    67                     X -= value;
    68                 }
    69                 else if (temp[0] == 'D')
    70                 {
    71                     X += value;
    72                 }
    73                 else if (temp[0] == 'S')
    74                 {
    75                     Y -= value;
    76                 }
    77                 else if (temp[0] == 'W')
    78                 {
    79                     Y += value;
    80                 }
    81                 else
    82                 {
    83                     continue;
    84                 }
    85             }
    86             else
    87             {
    88                 continue;
    89             }
    90         }
    91         cout << X << ',' << Y << endl;
    92     }
    93     
    94     return 0;
    95 }
  • 相关阅读:
    Vue数据双向绑定原理
    JS递归
    JS数据结构-链表
    JS数据结构-树
    React性能优化手段
    Django请求的生命周期
    Devops-git初识
    Django数据迁移的问题
    无监控,不运维!运维监控工具平台建设总结
    数据库-数据类型及主键外键
  • 原文地址:https://www.cnblogs.com/hhboboy/p/5535334.html
Copyright © 2020-2023  润新知