📄 new_file.cpp
字号:
if(stage[she].quan==xiao1)
{
xiao0[xiao0_counter]=stage[she].num;
xiao0_counter++;
}
}
for(she=0;she<xiao0_counter;she++)
cout<<"你是不是在找 "<<stage[xiao0[she]].name<<"?"<<endl;
cout<<endl;
}
if(i_end_enable==1)
{
xiao0_counter=0;
cout<<"输入终点站有错误"<<endl;
for(she=0;she<=stage_num;she++)
{
stage[she].quan=mohu(input2,stage[she].name);
if(stage[she].quan>=xiao1)
{
xiao1=stage[she].quan;/////找出整个的最大权值
}
}
for(she=0;she<=stage_num;she++)
{
if(stage[she].quan==xiao1)
{
xiao0[xiao0_counter]=stage[she].num;
xiao0_counter++;
}
}
for(she=0;she<xiao0_counter;she++)
cout<<"你是不是在找 "<<stage[xiao0[she]].name<<"?"<<endl;
cout<<endl;
}
goto labnext;
}
///////////****到此已经得到了起点和终点在整个stage数组中的位置****////////////
///////////下面就是对起点和终点所包括的集合里取交集//////////
for(int qq0=0;qq0<stage[begin_stage].line_in;qq0++)
for(int qq1=0;qq1<stage[end_stage].line_in;qq1++)
{
int tmp_ji;
tmp_ji=strcmp(stage[begin_stage].biaoji[qq0].way,stage[end_stage].biaoji[qq1].way);
if(tmp_ji==0)
{
strcpy(same[same_counter0],stage[begin_stage].biaoji[qq0].way);
same_counter0++;
}
}
for(int an=0;an<same_counter0;an++)
{
if(an==0)
{
cout<<"有直达车"<<endl;
cout<<endl;
}
cout<<"第"<<an+1<<"条为"<<same[an]<<"路"<<endl;
}
/////////***不转车的情况结束,验证成功***//////////
////////****以下是要转一次车的情况*****///////
if(same_counter0==0)
{
for(int pp0=0;pp0<stage[begin_stage].line_in;pp0++)////////遍历所有经过这个站点的路线
{
for(int pp1=0;pp1<=bus_num;pp1++)
{
int tmp_use;
tmp_use=strcmp(stage[begin_stage].biaoji[pp0].way,bus_line[pp1].name);
if(tmp_use==0)////寻找公交车号相同的,将经过的站台的存放到line_all
{
for(int pp2=0;pp2<=bus_line[pp1].geshu;pp2++)
{
int tmp10;
for(int pp3=0;pp3<=cross_stage;pp3++)///////查询是不是有重复的站点的进入,防止重复
{
tmp10=strcmp(bus_line[pp1].line[pp2],line_all[pp3]);
if(tmp10==0)
{
enable_add=0;
break;
}
}
if(enable_add==1)
{
strcpy(line_all[cross_stage],bus_line[pp1].line[pp2]);
cross_stage++;
}
enable_add=1;
}
}
}
}
///////////////*****到此为止已经得到了由起始站点所能达到的站点的值,放在line_all数组里,站的数目为cross_stage**/////////
/////////以下是将line_all数组里的站点所经过的路线全部保存到一个数组里//////////
for(int jj0=0;jj0<cross_stage;jj0++)
for(int jj1=0;jj1<=stage_num;jj1++)
{
int we;
we=strcmp(line_all[jj0],stage[jj1].name);
if(we==0)///相同的站点则将此站点所经过的路线值导入
{
for(int jj2=0;jj2<stage[jj1].line_in;jj2++)
{
for(int jj3=0;jj3<=line_num_flag;jj3++)/////查询现有的line_num数组里是不是已经有相同的值
{
int tmp_ji1;
tmp_ji1=strcmp(stage[jj1].biaoji[jj2].way,line_num[jj3]);
if(tmp_ji1==0)
{
line_num_enable=0;
break;
}
}
if(line_num_enable==1)/////允许计入到数组
{
strcpy(line_num[line_num_flag],stage[jj1].biaoji[jj2].way);
line_num_flag++;
}
line_num_enable=1;
}
}
}
for(int jj5=0;jj5<line_num_flag;jj5++)//////取相同的值
for(int jj6=0;jj6<stage[end_stage].line_in;jj6++)
{
int tmp_ji2;
tmp_ji2=strcmp(line_num[jj5],stage[end_stage].biaoji[jj6].way);
if(tmp_ji2==0)
{
strcpy(same1_2[same1_2counter],line_num[jj5]);
same1_2counter++;
}
}
////////**起点的中转与终点的交集结束**///////
////***起点的中转与起点的交集得到从起点到终点所坐的车***/////
for(int jj9=0;jj9<line_num_flag;jj9++)
for(int jj10=0;jj10<stage[begin_stage].line_in;jj10++)
{
int tmp_ji3;
tmp_ji3=strcmp(line_num[jj9],stage[begin_stage].biaoji[jj10].way);
if(tmp_ji3==0)
{
strcpy(same1_1[same1_1counter],line_num[jj9]);
same1_1counter++;
}
}
///**same1_1[]存放的是起点到中转站得车号,same1_2[]存放的是终点到中转站的车号,求俩个的相交点即为中转点**///////
int god0[20];/////起始站的ID
int god0_flag=0;////起始站的入栈个数
int god1[20];/////终点站的id
int god1_flag=0;////终点站的入栈个数
for(int pi0=0;pi0<same1_1counter;pi0++)
for(int pi2=0;pi2<=bus_num;pi2++)//////首先要寻找到是在哪一个bus_line[]里////////
{
int tmpp_use;
tmpp_use=strcmp(bus_line[pi2].name,same1_1[pi0]);
if(tmpp_use==0)
{
god0[god0_flag]=bus_line[pi2].id;
god0_flag++;
}
}
/////////////////////////////二号//////////////////
for(int pi1=0;pi1<same1_2counter;pi1++)
for(int pi3=0;pi3<=bus_num;pi3++)
{
int tmmp_use;
tmmp_use=strcmp(bus_line[pi3].name,same1_2[pi1]);
if(tmmp_use==0)
{
god1[god1_flag]=bus_line[pi3].id;
god1_flag++;
}
}
//////////////////***以下函数是得到两条路线的共同站点round[]***//////////////
int useful0;
for(int pi4=0;pi4<god0_flag;pi4++)
for(int pi5=0;pi5<god1_flag;pi5++)
{
///////***对于每一条路线而言要比较所有的站点*****//////
for(int pi6=0;pi6<=bus_line[god0[pi4]].geshu;pi6++)
for(int pi7=0;pi7<=bus_line[god1[pi5]].geshu;pi7++)
{
useful0=strcmp(bus_line[god0[pi4]].line[pi6],bus_line[god1[pi5]].line[pi7]);
if(useful0==0)
{
int first;////记录起点在那一条公交线上的位置
int middle0;///记录中转站在起点线上的位置
int middle1;////记录中转站在终点线上的位置
int last;////记录终点在那一条线上的位置
strcpy(zhongzhuan[zhongzhuan_counter].begin_line,bus_line[god0[pi4]].name);
strcpy(zhongzhuan[zhongzhuan_counter].end_line,bus_line[god1[pi5]].name);
strcpy(zhongzhuan[zhongzhuan_counter].round,bus_line[god0[pi4]].line[pi6]);
zhongzhuan[zhongzhuan_counter].begin_id=god0[pi4];
zhongzhuan[zhongzhuan_counter].end_id=god1[pi5];
/////////****以下函数的作用是得到站数值****/////////
////////***首先计算从起点到中转站的值****/////////
for(int pi8=0;pi8<stage[begin_stage].line_in;pi8++)
{
int tmp_ji4;
tmp_ji4=strcmp(zhongzhuan[zhongzhuan_counter].begin_line,stage[begin_stage].biaoji[pi8].way);
if(tmp_ji4==0)
{
first=stage[begin_stage].biaoji[pi8].num;
break;
////得到起点站的在整个队列中的编号
}
}
////得到终点站的在整个队列中的编号
for(int pi9=0;pi9<stage[end_stage].line_in;pi9++)
{
int tmp_ji5;
tmp_ji5=strcmp(zhongzhuan[zhongzhuan_counter].end_line,stage[end_stage].biaoji[pi9].way);
if(tmp_ji5==0)
{
last=stage[end_stage].biaoji[pi9].num;
break;
}
}
for(int pi10=0;pi10<=stage_num;pi10++)
{
int now;
now=strcmp(zhongzhuan[zhongzhuan_counter].round,stage[pi10].name);
if(now==0)
{
for(int pi11=0;pi11<stage[pi10].line_in;pi11++)
{
int tmp_ji6;
tmp_ji6=strcmp(zhongzhuan[zhongzhuan_counter].begin_line,stage[pi10].biaoji[pi11].way);
if(tmp_ji6==0)
{
middle0=stage[pi10].biaoji[pi11].num;
break;
}
}
break;
}
}
for(int pi12=0;pi12<=stage_num;pi12++)
{
int now1;
now1=strcmp(zhongzhuan[zhongzhuan_counter].round,stage[pi12].name);
if(now1==0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -