题目描述
开发一个坐标计算工具, 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;
}