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

📄 最终修改.txt

📁 本程序实现的是南京的公交线路查询
💻 TXT
📖 第 1 页 / 共 3 页
字号:
											///**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 + -