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

📄 new_file.cpp

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