#include #include #include #include int main(int argc, char *argv[]){ int j=1; double x,y,add,q2=sqrt(2)/2.0; char s[500],*sp,c1,c2; FILE *f = fopen("treasure.in","r"); while(1){ fgets(s,500,f); if(strcmp(s,"END")==0) break; x=y=0; sp=strtok(s,","); while(sp!=NULL){ sscanf(sp,"%lf%c%c",&add,&c1,&c2); switch(c1){ case 'N': { switch(c2){ case 'E': x+=add*q2; y+=add*q2; break; case 'W': x-=add*q2; y+=add*q2; break; default: y+=add; break; } } break; case 'E': x+=add; break; case 'S': { switch(c2){ case 'E': x+=add*q2; y-=add*q2; break; case 'W': x-=add*q2; y-=add*q2; break; default: y-=add; break; } } break; case 'W': x -= add; } sp=strtok(NULL,","); } printf("Map #%d\nThe treasure is located at(%.3f,%.3f).\n",j++, x,y); printf("The distance to the treasure is %.3f.\n\n", sqrt(x*x+y*y)); } fclose(f); return 0; }