i debug this for many hours.
thanks first.
Code: Select all
#include<stdio.h>
#include<string.h>
#include<math.h>
#define MAX 50000
int main(void){
int n,lens,map=0;
char str[MAX],s[10];
char *tokenPtr;
long double x,y;
while(gets(str)){
if(strcmp(str,"END")==0)
break;
map++;
x=10e-12 ; y=10e-12 ;
tokenPtr = strtok(str,",");
while(tokenPtr!=NULL){
sscanf(tokenPtr,"%d %s",&n,s);
lens=strlen(s);
if(((strcmp(s,"N")==0&&(lens==1)) || (strcmp(s,"N.")==0&&(lens==2))))
{y=y+(double)n;}
if(((strcmp(s,"W")==0&&(lens==1)) || (strcmp(s,"W.")==0&&(lens==2))))
{x=x-(double)n;}
if(((strcmp(s,"S")==0&&(lens==1)) || (strcmp(s,"S.")==0&&(lens==2))))
{y=y-(double)n;}
if(((strcmp(s,"E")==0&&(lens==1)) || (strcmp(s,"E.")==0&&(lens==2))))
{x=x+(double)n;}
if(((strcmp(s,"NW")==0&&(lens==2)) || (strcmp(s,"NW.")==0&&(lens==3))))
{x=x-(double)n/sqrt(2); y=y+(double)n/sqrt(2);}
if(((strcmp(s,"SW")==0&&(lens==2)) || (strcmp(s,"SW.")==0&&(lens==3))))
{x=x-(double)n/sqrt(2); y=y-(double)n/sqrt(2);}
if(((strcmp(s,"SE")==0&&(lens==2)) || (strcmp(s,"SE.")==0&&(lens==3))))
{/x=x+(double)n/sqrt(2); y=y-(double)n/sqrt(2);}
if(((strcmp(s,"NE")==0&&(lens==2)) || (strcmp(s,"NE.")==0&&(lens==3))))
{x=x+(double)n/sqrt(2); y=y+(double)n/sqrt(2);}
tokenPtr=strtok(NULL,",");
}
printf("Map #%d\n",map);
printf("The treasure is located at (%.3Lf,%.3Lf).\n",x,y);
printf("The distance to the treasure is %.3Lf.\n",sqrt(x*x+y*y));
printf("\n");
}
return 0;
}