📄 城市信息查询.cpp
字号:
#include<iostream.h>
#include<stdlib.h>
#include<string.h>
typedef struct city /*定义结点的类型*/
{
char name[20]; /*存放城市的名称*/
float x; /*城市的X坐标*/
float y; /*城市的Y坐标*/
struct city *next;
}city,*LinkList;
city *newcity() /*定义city型的函数,返回city型的指针。这个函数是用来新建链表的*/
{
int a; /*a是用来选择执行路径的,a=1新建一个结点,a=0则退出输入,a为其他就不合法*/
city *l,*r,*t;
r=l=(city *)malloc(sizeof(city));
while(1)
{
cout<<"确认录入请输入1"<<endl;
cout<<"取消录入请输入0"<<endl;
cin>>a;
if(a==1)
{
cout<<"请输入城市名称和坐标"<<endl;
t=(city *)malloc(sizeof(city));
cin>>(t->name)>>(t->x)>>(t->y);
r->next=t;
r=t;
}
else if(a==0)
{
r->next=NULL;break;
}
else
{
cout<<"输入不合法"<<endl;break;
}
}
r->next=NULL;
return l;
}
city *getcity(city *l,char *name) /*这个函数是通过城市名来找坐标的*/
{
city *s=l;
while((s!=NULL)&&(strcmp(s->name,name)!=0)) /*s不为空或strcmp函数不为0,s指针向后移一个*/
s=s->next;
if(s!=NULL) /*s不为空则输出s所指的结点,即城市信息*/
cout<<(s->name)<<" "<<(s->x)<<" " <<(s->y)<<endl;
else cout<<"未找到或输入不正确"<<endl;
return l;
}
void search(city *l,float x,float y, float b) /*这个函数是用来搜寻附近城市的*/
{
float v; /*v是用来判断距离的*/
city *n=l->next;
while(n!=NULL)
{
v=(n->x-x)*(n->x-x)+(n->y-y)*(n->y-y); /*用直角三角形定理来判断*/
if(v<(b*b))
{
cout<<(n->name)<<" " <<(n->x) <<","<< (n->y)<<endl;
n=n->next;
}
else
cout<<"未找到"<<endl;break;
}
}
void main()
{
int a,c; /*a是进人程序时录入的一个参数,c是switch函数用到的*/
float x,y,b; /*x,y是是搜寻的参考坐标系,b是搜寻的距离大小*/
char name[20];
city *l,*s;
cout<<" 进入城市输入查询系统请按1"<<endl;
cin>>a;
while(a!=0)
{
cout<<" 城市输入查询系统"<<endl;
cout<<" 1.录入城市名和坐标 "<<endl;
cout<<" 2.根据城市名称搜索 "<<endl;
cout<<" 3.搜索距离内的城市 "<<endl;
cout<<" 0.退出"<<endl;
cout<<"\t"<<endl;
cout<<"请选择:";
cin>>c;
switch(c)
{
case 1:
l=newcity();break; /*进入录入函数*/
case 2:
cout<<"输入要寻找的城市名称"<<endl;
cin>>name;
l=getcity(l,name); /*根据城市名称搜索*/
break;
case 3:
cout<<"请输入本地城市的坐标"<<endl;
cin>>x>>y;
cout<<"请输入需要的距离半径"<<endl;
cin>>b;
search(l,x,y,b); /*搜索距离内的城市*/
break;
case 0:a=0;break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -