题目链接:点击打开链接
代码:
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cctype>
using namespace std;
const int N = 203;
const double t = sqrt(2.0);
char str[N];
int main(){
int cnt = 0;
while(scanf("%s",str) != EOF){
if(str[0] == 'E' && str[1] == 'N') break;
cnt++;
double x = 0, y = 0;
int i =0;
double digit = 0;
while(i < strlen(str)){
if(isdigit(str[i])){
digit = digit * 10 + (str[i] - '0');
}else if(str[i] == 'N'){
if(str[i + 1] == 'E'){
x += digit / t;
y += digit / t;
digit = 0;
}else if(str[i + 1] == 'W'){
x -= digit / t;
y += digit / t;
digit = 0;
}else{
y += digit;
digit = 0;
}
} else if(str[i] == 'E'){
x += digit;
digit = 0;
}else if(str[i] == 'S'){
if(str[i + 1] == 'E'){
x += digit / t;
y -= digit / t;
digit = 0;
}else if(str[i + 1] == 'W'){
x -= digit / t;
y -= digit / t;
digit = 0;
}else{
y -= digit;
digit = 0;
}
}else if(str[i] == 'W'){
x -= digit;
digit = 0;
}
i++;
}
printf("Map #%d\n",cnt);
printf("The treasure is located at (%.3lf,%.3lf).\n",x,y);
printf("The distance to the treasure is %.3lf.\n\n",sqrt(x*x + y*y));
}
return 0;
}