坐标移动

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

算法思路:就是把一个字符串的每次操作都放在一个vectortemp容器里面,然后通过temp[i]
的操作,再次提取其中的w、A等信息然后找距离。找出来以后进行swith操作。

代码实现如下:

#include <iostream>
#include <vector>
#include <string>
using  namespace std;

int main() {
    int x=0,y=0;
    string s;
    cin>>s;
    vector<string>temp;//存放每一次操作
    int Len=s.size();
    int count=0;
    for(int i=0;i<Len;i++)//提取每次操作
    {
       if(s[i]!=';') {

           count++;
           continue;
       }
        temp.push_back((s.substr(i-count,count)));//存放在字符串容器中
        count=0;
    }
    for (int j = 0; j <temp.size() ; ++j)
    {
        int num=0;
        if(temp[j].size()==3&&temp[j][1]>='0'&&temp[j][1]<='9'&&temp[j][2]>='0'&&temp[j][2]<='9') //区分到底是A10的形式还是A1这种形式分成两种情况。
            num=(temp[j][1]-'0')*10+(temp[j][2]-'0');
        if(temp[j].size()==2&&temp[j][1]>='0'&&temp[j][1]<='9')
            num=temp[j][1]-'0';//第二种情况
        switch(temp[j][0])
        {
            case 'A':x-=num;break;
            case 'D':x+=num;break;
            case 'S':y-=num;break;
            case 'W':y+=num;break;
            default:break;

        }

    }
    cout<<x<<","<<y;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值