题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29?tpId=37&tags=&title=&difficulty=0&judgeStatus=0&rp=1&sourceUrl=%2Fexam%2Foj%2Fta%3Fpage%3D1%26tpId%3D37%26type%3D37&dayCountBigMember=%E8%BF%9E%E7%BB%AD%E5%8C%85%E6%9C%88
/*
思路: 总体是字符串处理。 注意输入数据的获取
1. 使用 getline(cin, str, ';') 来获取输入数据。 使用 pair<int, int> 来表示坐标
2. 判断获取到的输入数据是否满足要求。 a. 判空 b. 数字是否符合要求
3. 对获取到的字符串第一个字符做switch 判断。
4. 根据不同的 case , 坐标做相应的移到
*/
#include <cctype>
#include<iostream>
#include <utility>
using namespace std;
bool checkIsNum(string str){
bool bisNum = true;
for(auto c : str){
if(!isdigit(c)){
bisNum = false;
break;
}
}
return bisNum;
}
int main(){
string str;
string num;
bool bisNum = false;
pair<int, int> pos(0,0);
while(getline(cin, str, ';')){
if(str.empty()){
continue;
}
num = str.substr(1);
bisNum = checkIsNum(num);
if(bisNum){
switch (str[0]) {
case 'W':
pos.second += stoi(num);
break;
case 'S':
pos.second -= stoi(num);
break;
case 'A':
pos.first -= stoi(num);
break;
case 'D':
pos.first += stoi(num);
break;
default:
break;
}
}
}
cout << pos.first << ',' << pos.second << endl;
return 0;
}
查看15道真题和解析