⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1473.txt

📁 北大ACM题目例程 详细的解答过程 程序实现 算法分析
💻 TXT
字号:


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define sq2 0.70710678118654752440084436210485
#define INF 30000
#define NMAX 52
int p[10]={0};
int as[10]={0};
double xd[8]={0,sq2,1,sq2,0,-sq2,-1,-sq2};
double yd[8]={1,sq2,0,-sq2,-1,-sq2,0,sq2};
double cx,cy;
void findpos(char *s)
{
	s[strlen(s)-1]=0;
	int len;
	char direct[4];
	sscanf(s,"%d%s",&len,direct);
	int d;
	
	if(!strcmp("NE",direct))
		d=1;
	else if(!strcmp("E",direct))
		d=2;
	else if(!strcmp("SE",direct))
		d=3;
	else if(!strcmp("SW",direct))
		d=5;
	else if(!strcmp("W",direct))
		d=6;
	else if(!strcmp("NW",direct))
		d=7;
	else if(!strcmp("N",direct))
		d=0;
	else if(!strcmp("S",direct))
		d=4;
	cx+=xd[d]*len;
	cy+=yd[d]*len;


		
}
int input(char *s)
{
	int i=0;
	do
	{
		
		scanf("%c",&s[i]);
		if(s[i]==',')
		{
			s[i+1]='\0';
			return 1;
		}
		else if(s[i]=='.')
		{
			s[i+1]='\0';
			return 2;
		}
		else if(s[i]=='D')
		{
			return 3;
		}
		i++;

	}
	while(1);
}

int main()
{

#if _DEBUG	
//	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);
#endif
char s[10];

	int flag=0;
	int times=1;
	double dis;
	
//	freopen("in.txt","r",stdin);
//	freopen("out.txt","w",stdout);
	cx=0;
	cy=0;
	while(flag!=3)
	{
		flag=input(s);
		if(flag==1)
		{
			findpos(s);
		}
		if(flag==2)
		{
			findpos(s);
			dis=sqrt(cx*cx+cy*cy);
			printf("Map #%d\n",times);
			printf("The treasure is located at (%.3f,%.3f).\n",cx,cy);
			printf("The distance to the treasure is %.3f.\n\n",dis);
			cx=0;
			cy=0;
			times++;
		}
			
	}
	
	

		
#if _DEBUG
	fclose(stdin);
	fclose(stdout);
#endif
	return 1;
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -