this is my code :
Code: Select all
#include <stdio.h>
#include <string.h>
#include <math.h>
double x,y;
void utara(int pindah){
y+=pindah;
}
void selatan(int pindah){
y-=pindah;
}
void timur(int pindah){
x+=pindah;
}
void barat(int pindah){
x-=pindah;
}
void utarabarat(int pindah){
double temp = sqrt((pindah*pindah)/2);
x-=temp;
y+=temp;
}
void utaratimur(int pindah){
double temp = sqrt((pindah*pindah)/2);
x+=temp;
y+=temp;
}
void selatanbarat(int pindah){
double temp = sqrt((pindah*pindah)/2);
x-=temp;
y-=temp;
}
void selatantimur(int pindah){
double temp = sqrt((pindah*pindah)/2);
x+=temp;
y-=temp;
}
void main(){
freopen("treasure.in","r",stdin);
freopen("treasure.out","w",stdout);
char s[205] = "";
int awal = 1;
while(scanf("%s",&s)==1){
if(strcmp(s,"END")==0) break;
int i = 0;
int byk = strlen(s);
int mypindah = 0;
int faktor = 1;
x = 0;y = 0;
while(i<byk){
if(((int) s[i])>=48 && ((int) s[i])<=57){
mypindah = (mypindah * faktor) + (((int) s[i]) - 48);
faktor =10;
i++;
}
else {
faktor = 1;
if(s[i]=='.'){
i+=byk;
continue;
}
else if(s[i]=='N' && (s[i+1]==',' || s[i+1]=='.')) {
utara(mypindah);
mypindah = 0;
i+=2;
if(s[i+1]=='.') i+=byk;
continue;
}
else if(s[i]=='W' && (s[i+1]==',' || s[i+1]=='.')) {
barat(mypindah);
mypindah = 0;
if(s[i+1]=='.') i+=byk;
i+=2;continue;
}
else if(s[i]=='E' && (s[i+1]==',' || s[i+1]=='.')) {
timur(mypindah);
mypindah = 0;
if(s[i+1]=='.') i+=byk;
i+=2;continue;
}
else if(s[i]=='S' && (s[i+1]==',' || s[i+1]=='.')) {
selatan(mypindah);
mypindah = 0;
if(s[i+1]=='.') i+=byk;
i+=2;continue;
}
else if(s[i]=='N' && s[i+1]=='W') utarabarat(mypindah);
else if(s[i]=='N' && s[i+1]=='E') utaratimur(mypindah);
else if(s[i]=='S' && s[i+1]=='W') selatanbarat(mypindah);
else if(s[i]=='S' && s[i+1]=='E') selatantimur(mypindah);
if(s[i+2]=='.') i+=byk;
mypindah = 0;
i+=3;
}
}
printf("Map #%d\n",awal);
printf("The treasure is located at (%.3f,%.3f).\n",x,y);
double jarak = sqrt((x*x) + (y*y));
printf("The distance to the treasure is %.3f.\n\n",jarak);
awal++;
}
}
thanks...