各城市地形图的分幅与编号查询系统
#include<iostream>
#include<cmath>
#include<iomanip>
#include<string>
using namespace std;
struct city
{
char name[50];
int jd;
int jf;
int jm;
int wd;
int wf;
int wm;
string jdf;
float a;
float b;
int lie;
char hang;
}ci[50];
int main()
{
int i,n,m,x[100],X[100],l,s[100],S[100],j,g,G;
float a;
string str1,str2;
str1='w';
str2='e';
cout<<"输入将要查询城市的个数:";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"输入第"<<i<<"个将要查询的城市名称:";
cin>>ci[i].name;
}
cout<<endl;
for(i=1;i<=n;i++)
{
cout<<"输入"<<ci[i].name<<"的经度(注明w和e)"<<endl;
cin>>ci[i].jd>>ci[i].jf>>ci[i].jm>>ci[i].jdf;
cout<<"输入"<<ci[i].name<<"的纬度"<<endl;
cin>>ci[i].wd>>ci[i].wf>>ci[i].wm;
ci[i].a=ci[i].jd+float(ci[i].jf/60)+float(ci[i].jm/3600);
ci[i].b=ci[i].wd+float(ci[i].wf/60)+float(ci[i].wm/3600);
}
for(i=1;i<=n;i++)
{
if(ci[i].jdf==str1)
{
ci[i].lie=int(((180-ci[i].a)/6+1)/1.0);
X[i]=180-(ci[i].lie-1)*6;
}
if(ci[i].jdf==str2)
{
ci[i].lie=int((ci[i].a/6+1)/1.0)+30;
X[i]=(ci[i].lie-31)*6;
}
ci[i].hang=char(int(ci[i].b/4+1)/1.0+64);
x[i]=int(ci[i].b/4+1)/1.0*4;
cout<<ci[i].name<<"所在1:100万地形图的图幅编号为:"<<ci[i].hang<<ci[i].lie<<endl;
}
cout<<"请选择分幅编号的类型:"<<endl;
a=50;
for(i=1;i<=7;i++)
{
cout<<i<<":1:"<<a<<"万"<<" ";
a=a/2;
if(i==2)
{
a=10;
}
if(i==5)
{
a=1;
}
}
cout<<" "<<"8:结束查询"<<endl;
do
{
cin>>m;
if(m==1)
{
for(l=1;l<=n;l++) //城市
{
g=0;
G=0;
for(i=1;i<=2;i++) //行
{
if(ci[l].b>=x[l]-2*i)
{
s[l]=i;
for(j=1;j<=2;j++) //列
{
if(ci[l].a<=X[l]+3*j)
{
g++;
G++;
S[l]=j;
}
if(g==1)
break;
}
}
if(G==1)
break;
}
}
for(l=1;l<=n;l++)
{
cout<<ci[l].name<<"所在1:50万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"B"<<"00"<<s[l]<<"00"<<S[l]<<endl;
}
}
if(m==2)
{
for(l=1;l<=n;l++) //城市
{
g=0;G=0;
for(i=1;i<=4;i++) //行
{
if(ci[l].b>=x[l]-i)
{
s[l]=i;
for(j=1;j<=4;j++) //列
{
if(ci[l].a<=X[l]+1.5*j)
{
G++;
g++;
S[l]=j;
}
if(g==1)
break;
}
}
if(G==1)
break;
}
}
for(l=1;l<=n;l++)
{
cout<<ci[l].name<<"所在1:25万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"00"<<S[l]<<endl;
}
}
if(m==3)
{
for(l=1;l<=n;l++) //城市
{
g=0;G=0;
for(i=1;i<=12;i++) //行
{
if(ci[l].b>=x[l]-0.33*i)
{
s[l]=i;
for(j=1;j<=12;j++) //列
{
if(ci[l].a<=X[l]+0.5*j)
{
G++;
g++;
S[l]=j;
}
if(g==1)
break;
}
}
if(G==1)
break;
}
}
for(l=1;l<=n;l++)
{
if(s[l]<10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:10万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]<10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:10万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"0"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:10万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:10万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"0"<<S[l]<<endl;
}
}
}
if(m==4)
{
for(l=1;l<=n;l++) //城市
{
g=0;G=0;
for(i=1;i<=24;i++) //行
{
if(ci[l].b>=x[l]-0.167*i)
{
s[l]=i;
for(j=1;j<=24;j++) //列
{
if(ci[l].a<=X[l]+0.25*j)
{
G++;
g++;
S[l]=j;
}
if(g==1)
break;
}
}
if(G==1)
break;
}
}
for(l=1;l<=n;l++)
{
if(s[l]<10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]<10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"0"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"0"<<S[l]<<endl;
}
}
}
if(m==5)
{
for(l=1;l<=n;l++) //城市
{
g=0;G=0;
for(i=1;i<=48;i++) //行
{
if(ci[l].b>=x[l]-0.083*i)
{
s[l]=i;
for(j=1;j<=48;j++) //列
{
if(ci[l].a<=X[l]+0.125*j)
{
G++;
g++;
S[l]=j;
}
if(g==1)
break;
}
}
if(G==1)
break;
}
}
for(l=1;l<=n;l++)
{
if(s[l]<10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:2.5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]<10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:2.5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"0"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:2.5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:2.5万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"0"<<S[l]<<endl;
}
}
}
if(m==6)
{
for(l=1;l<=n;l++) //城市
{
g=0;G=0;
for(i=1;i<=96;i++) //行
{
if(ci[l].b>=x[l]-0.0417*i)
{
s[l]=i;
for(j=1;j<=96;j++) //列
{
if(ci[l].a<=X[l]+0.0625*j)
{
G++;
g++;
S[l]=j;
}
if(g==1)
break;
}
}
if(G==1)
break;
}
}
for(l=1;l<=n;l++)
{
if(s[l]<10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:1万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]<10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:1万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"0"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:1万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]>=10&&S[l]>=10)
{
cout<<ci[l].name<<"所在1:1万地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"0"<<S[l]<<endl;
}
}
}
if(m==7)
{
for(l=1;l<=n;l++) //城市
{
g=0;G=0;
for(i=1;i<=192;i++) //行
{
if(ci[l].b>=x[l]-0.0208*i)
{
s[l]=i;
for(j=1;j<=192;j++) //列
{
if(ci[l].a<=X[l]+0.03125*j)
{
G++;
g++;
S[l]=j;
}
if(g==1)
break;
}
}
if(G==1)
break;
}
}
for(l=1;l<=n;l++)
{
if(s[l]<10&&S[l]<10)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]<10&&S[l]>=10&&S[l]<100)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<"0"<<S[l]<<endl;
}
if(s[l]<10&&S[l]>=100)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"00"<<s[l]<<S[l]<<endl;
}
if(s[l]>=10&&s[l]<100&&S[l]<10)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]>=10&&s[l]<100&&S[l]>=10&&S[l]<100)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<"0"<<S[l]<<endl;
}
if(s[l]>=10&&s[l]<100&&S[l]>=100)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<"0"<<s[l]<<S[l]<<endl;
}
if(s[l]>=100&&S[l]<10)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<s[l]<<"00"<<S[l]<<endl;
}
if(s[l]>=100&&S[l]>=10&&S[l]<100)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<s[l]<<"0"<<S[l]<<endl;
}
if(s[l]>=100&&S[l]>=100)
{
cout<<ci[l].name<<"所在1:5000地形图的图幅编号为:"<<ci[l].hang<<ci[l].lie<<"C"<<s[l]<<S[l]<<endl;
}
}
}
}
while(m!=8);
return 0;
}