题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
#include <iostream> #include <string> #include <sstream> using namespace std; int x=0; int y=0; bool IsDirect(const char & a){ if(a=='A'||a=='W'||a=='D'||a=='S'){ return true; }else{ return false; } } void movepos(const char & c,int & num){ switch(c){ case 'A':x-=num;break; case 'D':x+=num;break; case 'W':y+=num;break; case 'S':y-=num;break; } } int main() { string s; int num; while (getline(cin,s,';')) { // 注意 while 处理多个 case if(s.size()<2||s.size()>3||!IsDirect(s[0])){ continue; } bool Istwo=s.size()-2; if(!isdigit(s[1])||!isdigit(s[1+Istwo])){ continue; } //stringstream ss(s.substr(1)); //ss>>num; num=atoi(s.substr(1).c_str()); movepos(s[0],num); } cout<<x<<","<<y; }