華為測試 坐標移動
阿新 • • 發佈:2017-06-28
esp popu 例子 atoi clu mov dex ios ++i
開發一個坐標計算工具, A表示向左移動。D表示向右移動。W表示向上移動,S表示向下移動。
從(0,0)點開始移動,從輸入字符串裏面讀取一些坐標。並將終於輸入結果輸出到輸出文件中面。
輸入:
合法坐標為A(或者D或者W或者S) + 數字(兩位以內)
坐標之間以;分隔。
非法坐標點須要進行丟棄。如AA10; A1A; $%$; YAD; 等。
以下是一個簡單的樣例 如:
A10;S20;W10;D30;X;A1A;B10A11;;A10;
處理過程:
起點(0,0)
+ A10 = (-10,0)
+ S20 = (-10,-20)
+ W10 = (-10,-10)
+ D30 = (20,-10)
+ x = 無效
+ A1A = 無效
+ B10A11 = 無效
+ 一個空 不影響
+ A10 = (10,-10)
結果 (10, -10)
例子輸入:A10;S20;W10;D30;X;A1A;B10A11;;A10;
例子輸出:10。-10
#include<iostream> #include<string> using namespace std; int X=0,Y=0; void move(string s); int main() { string str; string temp; cin>>str; for(string::size_type index=0;index!=str.size();++index) { if(str[index]!=';') temp.push_back(str[index]); else { move(temp); temp.clear(); } } cout<<X<<","<<Y<<endl; return 0; } void move(string s) { if(s.empty()) return; if(s.size()>3 || s.size()<=1) return; if(!(s[0]!='A'||s[0]!='S'||s[0]!='W'||s[0]!='D')) return; if((s[1]>'9'||s[1]<'0')||(s[s.size()-1]>'9'||s[s.size()-1]<'0')) return; string ID; int num=0; if(s[0]=='A') { for(string::size_type idx=1;idx!=s.size();++idx) ID.push_back(s[idx]); num=atoi(ID.c_str()); X-=num; } if(s[0]=='W') { for(string::size_type idx=1;idx!=s.size();++idx) ID.push_back(s[idx]); num=atoi(ID.c_str()); Y+=num; } if(s[0]=='S') { for(string::size_type idx=1;idx!=s.size();++idx) ID.push_back(s[idx]); num=atoi(ID.c_str()); Y-=num; } if(s[0]=='D') { for(string::size_type idx=1;idx!=s.size();++idx) ID.push_back(s[idx]); num=atoi(ID.c_str()); X+=num; } }
華為測試 坐標移動