📄 最终修改.txt
字号:
///**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++;
}
}
//cout<<"达到了这一步"<<endl;
//////////////////***以下函数是得到两条路线的共同站点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)
{
for(int pi13=0;pi13<stage[pi12].line_in;pi13++)
{
int tmp_ji7;
tmp_ji7=strcmp(zhongzhuan[zhongzhuan_counter].end_line,stage[pi12].biaoji[pi13].way);
if(tmp_ji7==0)
{
middle1=stage[pi12].biaoji[pi13].num;
break;
}
}
break;
}
}
zhongzhuan[zhongzhuan_counter].lu_cheng=abs(first-middle0)+abs(last-middle1);
///zhongzhuan[zhongzhuan_counter]=abs(bus_line[god0[pi4]])+abs();///经过的站数辆还没定
zhongzhuan_counter++;/////中转站的数目变多
}
}
}
cout<<zhongzhuan_counter<<endl;
///////////////////****得到了线路的交点****/////////////////////
///////***想通过排序的方法得到路径由短到长的排列****////////
///////** 交换两个zhongzhuan结构体的值 **///////
for(int bee0=0;bee0<zhongzhuan_counter;bee0++)
for(int bee1=0;bee1<zhongzhuan_counter;bee1++)
if(zhongzhuan[bee0].lu_cheng<zhongzhuan[bee1].lu_cheng)
{
least.begin_id=zhongzhuan[bee0].begin_id;
strcpy(least.begin_line,zhongzhuan[bee0].begin_line);
least.end_id=zhongzhuan[bee0].end_id;
strcpy(least.end_line,zhongzhuan[bee0].end_line);
least.lu_cheng=zhongzhuan[bee0].lu_cheng;
strcpy(least.round,zhongzhuan[bee0].round);
zhongzhuan[bee0].begin_id=zhongzhuan[bee1].begin_id;
strcpy(zhongzhuan[bee0].begin_line,zhongzhuan[bee1].begin_line);
zhongzhuan[bee0].end_id=zhongzhuan[bee1].end_id;
strcpy(zhongzhuan[bee0].end_line,zhongzhuan[bee1].end_line);
zhongzhuan[bee0].lu_cheng=zhongzhuan[bee1].lu_cheng;
strcpy(zhongzhuan[bee0].round,zhongzhuan[bee1].round);
zhongzhuan[bee1].begin_id=least.begin_id;
strcpy(zhongzhuan[bee1].begin_line,least.begin_line);
zhongzhuan[bee1].end_id=least.end_id;
strcpy(zhongzhuan[bee1].end_line,least.end_line);
zhongzhuan[bee1].lu_cheng=least.lu_cheng;
strcpy(zhongzhuan[bee1].round,least.round);
}
////////***上面**///////
// cout<<"达到了这一步"<<endl;
for(int pi8=0;pi8<zhongzhuan_counter;pi8++)
{
if(pi8==0)cout<<"没有直达车,需要转车"<<endl;
cout<<"第"<<pi8+1<<"种方法为: "<<"起点"<<zhongzhuan[pi8].begin_line<<"->到->"<<zhongzhuan[pi8].round<<"下车坐"<<zhongzhuan[pi8].end_line<<"到目的. "<<"总的路程为"<<zhongzhuan[pi8].lu_cheng<<endl;
}
cout<<"提示:输入相应的乘车编号可以具体查看经过哪些站点,输入0退出"<<endl;
cin>>tishi;
if(tishi==0)break;////输入为0则跳出
int use_endl=0;/////用于输出回车符
///////////////////////////////////////////////////**以下的程序是实现各个站点的输出**///////////////////////////////////////////////////
if(tishi<=zhongzhuan_counter)////输入的选择方案可以找到
{
int way_begin;////存放起始的站台在起始公交线的站数
int way_middle0;////存放中转站在起始公交线的站数
int way_middle1;////存放中转站在结束公交线的站数
int way_end;////存放终点在结束公交线路的站数
//////////寻找起点站在公交路线上的位置//////////
for(int self0=0;self0<=bus_line[zhongzhuan[tishi-1].begin_id].geshu;self0++)
{
int weak0;
int weak1;
weak0=strcmp(input1,bus_line[zhongzhuan[tishi-1].begin_id].line[self0]);
weak1=strcmp(zhongzhuan[tishi-1].round,bus_line[zhongzhuan[tishi-1].begin_id].line[self0]);
if(weak0==0)way_begin=self0;/////如果找到与起点相同的站点,记录站数
if(weak1==0)way_middle0=self0;////在起点线找到与中转相同的点,记录站数
}
for(int self1=0;self1<=bus_line[zhongzhuan[tishi-1].end_id].geshu;self1++)
{
int weak2;
int weak3;
weak2=strcmp(input2,bus_line[zhongzhuan[tishi-1].end_id].line[self1]);
weak3=strcmp(zhongzhuan[tishi-1].round,bus_line[zhongzhuan[tishi-1].end_id].line[self1]);
if(weak2==0)way_end=self1;/////如果找到与起点相同的站点,记录站数
if(weak3==0)way_middle1=self1;////在起点线找到与中转相同的点,记录站数
}
if(way_begin>=way_middle0)
{
cout<<"从起点站到中转站所坐的公交线为"<<zhongzhuan[tishi-1].begin_line<<"路,经过的各站点为:"<<endl;
cout<<endl;
for(int self2=way_begin;self2>=way_middle0;self2--)
{
out_enter++;
if(out_enter%6==0)cout<<endl;////每8个站点一行输出
cout<<bus_line[zhongzhuan[tishi-1].begin_id].line[self2]<<" ->";
}
}
else
{
cout<<"从起点站到中转站所坐的公交路线为"<<zhongzhuan[tishi-1].begin_line<<"路,经过的各站点为:"<<endl;
cout<<endl;
for(int self3=way_begin;self3<=way_middle0;self3++)
{
out_enter++;
if(out_enter%6==0)cout<<endl;
cout<<bus_line[zhongzhuan[tishi-1].begin_id].line[self3]<<" ->";
}
}
cout<<endl;
cout<<endl;
out_enter=0;
if(way_end>=way_middle1)
{
cout<<"从中转站到终点站所坐的公交路线为 "<<zhongzhuan[tishi-1].end_line<<"路,经过的各站点为:"<<endl;
// cout<<endl;
for(int self4=way_middle1;self4<=way_end;self4++)
{
out_enter++;
if(out_enter%6==0)cout<<endl;////每8个站点一行输出
cout<<bus_line[zhongzhuan[tishi-1].end_id].line[self4]<<" ->";
}
}
else
{
cout<<"从中转站到终点站所坐的公交线路为 "<<zhongzhuan[tishi-1].end_line<<" 路,经过的各站点为:"<<endl;
// cout<<endl;
for(int self5=way_middle1;self5>=way_end;self5--)
{
out_enter++;
if(out_enter%6==0)cout<<endl;
cout<<bus_line[zhongzhuan[tishi-1].end_id].line[self5]<<" ->";
}
}
cout<<endl;
}
else
cout<<"输入的选择方案有错误"<<endl;
break;
}
}
labnext: cout<<" 想继续吗(Y/N)?"<<endl;
cin>>mind;
if(mind=='Y'||mind=='y')
{
zhongzhuan_counter=0;
line_num_enable=1;
line_num_flag=0;
cross_stage=0;
enable_add=1;
same_counter2=0;
same_counter1=0;
same_counter0=0;
same1_2counter=0;
same1_1counter=0;
correct2=0;
correct1=0;
correct0=0;
end_stage=-1;
begin_stage=-1;
out_enter=0;//////用于经过的站点输出时的回车输出
xiao1=0;////临时的值
xiao0_counter=0;
continue;
}
else
break;
}
/////////////程序完成////////////////
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -