#include #include #include double distance; double posx, posy; char line[250]; void Analyze() { int number; posx = 0; posy = 0; double konst = sqrt(2) / 2.0; int i = -1; while(line[i++] != '.') { number = 0; char z = line[i++]; while(isdigit(z)) { number = 10*number+z-'0'; z = line[i++]; } i--; if((line[i] == 'N')&&((line[i+1] == ',')||(line[i+1]=='.'))) { posy = posy + number; i+=1; } if((line[i] == 'S')&&((line[i+1] == ',')||(line[i+1]=='.'))) { posy = posy - number; i+=1; } if((line[i] == 'W')&&((line[i+1] == ',')||(line[i+1]=='.'))) { posx = posx - number; i+=1; } if((line[i] == 'E')&&((line[i+1] == ',')||(line[i+1]=='.'))) { posx = posx + number; i+=1; } if((line[i] == 'N')&&(line[i+1] == 'E')) { posx = posx + number*konst; posy = posy + number*konst; i+=2; } if((line[i] == 'N')&&(line[i+1] == 'W')) { posx = posx - number*konst; posy = posy + number*konst; i+=2; } if((line[i] == 'S')&&(line[i+1] == 'E')) { posx = posx + number*konst; posy = posy - number*konst; i+=2; } if((line[i] == 'S')&&(line[i+1] == 'W')) { posx = posx - number*konst; posy = posy - number*konst; i+=2; } } distance = sqrt(posx*posx + posy*posy); } int main() { scanf("%s\n", line); while(line[0] != 'E') { Analyze(); posx = (abs(posx) <= 0.001) ? 0 : posx; posy = (abs(posy) <= 0.001) ? 0 : posy; distance = (abs(distance) <= 0.001) ? 0 : distance; printf("You can go to (%.3f,%.3f), the distance is %.3f steps.\n", posx, posy, distance); scanf("%s\n", line); } return 0; }