HJ17 坐标移动 C++

该C++代码片段用于读取一系列坐标移动指令(如A,D,W,S分别代表北、东、西、南),并根据输入的数字更新坐标。程序检查字符串是否全为数字,并使用switch-case结构执行相应的坐标操作,最后输出最终坐标。
摘要由CSDN通过智能技术生成

数据范围:每组输入的字符串长度满足 1≤n≤10000 ,坐标保证满足−2 ^31 ≤x,y≤2 ^31 −1 ,且数字部分仅含正数
输入描述:
一行字符串

输出描述:
最终坐标,以逗号分隔

示例1
输入:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
输出:
10,-10

示例2
输入:
ABC;AKL;DA1;
输出:
0,0

#include <iostream>
#include <string> 

using namespace std;

bool isNUM(string i)
{
    for(auto x : i)//!!!! auto 声明变量时根据初始化表达式自动推断该变量的类型
    {
        if(!isdigit(x)) return false;
    }
    return true;
}

int main() 
{
    int arry[2] = {0 , 0};//存储两个最终的坐标

    string s;
    while(getline(cin , s , ';')) //!!!!记住
    {
        if(s.empty()) continue; // empty() !!!!
        string num = s.substr(1); //除去第一个字符,剩下后面的字符

        if(isNUM(num))
        {
            switch(s[0])
            {
                case 'A' : arry[0] -= stoi(num); break; //stoi()字符串转int
                case 'D' : arry[0] += stoi(num); break;
                case 'W' : arry[1] += stoi(num); break; 
                case 'S' : arry[1] -= stoi(num); break;
            }
        }
    }
    cout << arry[0] << ',' << arry[1] << endl;
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值