#include #include int ptr; double x,y; int parsuj(char * kde) { int num = 0; while (kde[ptr] >= '0' && kde[ptr] <= '9') { num = num * 10 + kde[ptr] - '0'; ptr ++; } return num; } void add(char dir, double steps) { switch (dir) { case 'N': y += steps; break; case 'S': y -= steps; break; case 'E': x += steps; break; case 'W': x -= steps; break; } } int main(void) { char line[221]; int i; while(1) { gets(line); if(strcmp(line,"END") == 0) break; ptr = 0; x = 0; y=0; while (line[ptr]) { double steps = parsuj(line); char dir1 = line[ptr++]; char dir2 = line[ptr++]; if (dir2 == 'N' || dir2 == 'E' || dir2 == 'S' || dir2 =='W') { steps = steps / sqrt (2); add (dir2,steps); ptr++; } add (dir1,steps); } printf("You can go to (%.3f,%.3f), the distance is %.3f steps.\n", x, y, sqrt(x*x + y*y) ); } return 0; }