Consulta con guía turístico del campus
[Descripción del problema]
Diseñe un plan de guía turístico del campus para proporcionar diversos servicios de consulta de información para los visitantes.
[Requisitos Básicos]
(1) Diseña el plan del campus de tu escuela, incluyendo no menos de 10 atracciones. Los vértices en el gráfico representan los lugares escénicos de la escuela y almacenan los nombres, códigos, perfiles y otra información de los lugares escénicos, los caminos están representados por bordes y la longitud del camino y otra información relacionada se almacenan;
(2) Proporcionar a los turistas información sobre cualquier lugar escénico de la imagen.
(3) Proporcionar a los turistas orientación sobre la dirección de cualquier lugar escénico en la imagen, es decir, consultar el camino simple más corto entre dos lugares escénicos cualesquiera.
[Consejos de implementación]
Generalmente, las carreteras del campus son de doble sentido y se puede suponer que la planificación del campus es una red no dirigida. Tanto los vértices como las aristas contienen información relevante.
Análisis de requisitos
1 Seleccione 10 lugares escénicos familiares del plano de la Universidad del Norte de China y resúmalos en un gráfico ponderado no dirigido (como se muestra en la figura). Los vértices del gráfico representan lugares escénicos y los pesos en los bordes representan la distancia entre los dos lugares.
El propósito de esta aplicación es proporcionar a los usuarios consultas de rutas y atracciones. Genere la ruta correspondiente de acuerdo con el punto de inicio y el punto final especificados por el usuario o genere la información del lugar escénico de acuerdo con el lugar escénico especificado por el usuario.
Sur
Norte
2. Diseño del esquema
Este artículo utiliza 1 estructura de datos
*/
p>/*Incluir archivos de encabezado*/
# include & ltstdio.h & gt
# include & ltprocess.h & gt
/ *Definir constantes simbólicas*/
#definir INT_MAX 10000
#Definición número 10
/*Definir variables globales*/
int cost[n][n];/*El valor del borde*/
intshort[n][n];/*La distancia más corta entre dos puntos*/
int path[n][n];/*Pasando atracciones*/
/*Descripción del prototipo de función personalizada*/
void introduce();
int la distancia más corta();
void float ed();
void display (int i, int j);
División del trabajo entre dos personas
p>
(1) Consulta de información sobre atracciones
(2) La distancia más corta entre dos atracciones
(3) El camino entre dos atracciones
Tercer diseño detallado
void main()
{/*función principal*/
int i, j;
char k;
for(I = 0;i<= n;i++)
for(j = 0;j<= n;j++)
coste[I][j]= INT _ MAX;
coste[1][3]= costo[3][1]= 2;
coste[ 2][3]=Costo[3][2]= 1;
Costo[2][4]=Costo[4][2]= 2;
costo[ 3][10]= costo[10][3]= 4;
coste[1][10]= costo[10][1]= 4;
coste[ 2][10]= costo[10][2]= 4;
coste[4][10]= costo[10][4]= 4;
coste[ 1][4]= costo[4][1]= 5;
Costo[4][5]=coste[5][4]= 3;
Costo[ 4][9]=Costo[9][4]= 4;
Costo[5][9]=Costo[9][5]= 8;
Costo[ 5][7]=Costo[7][5]= 4;
Costo[5][6]=Costo[6][5]= 2;
Costo[ 6][7]=Costo[7][6]= 1;
Costo[7][8]=Costo[8][7]= 3;
Costo[ 8][6]=coste[6][8]= 4;
coste[1][1]= costo[2][2]= costo[3][3]= costo[4 ][4]= costo[5][5]= 0;
Costo[6][6]=coste[7][7]=coste[8][8]=coste[9] [9]=cost[10][10]= 0;
while(1)
{
Printf (" -Bienvenido al recorrido por la Universidad del Norte de China sistema de guía! -\ n ");
Printf("1. Para información sobre las atracciones... por favor presione I (introducción)\ n ");
Printf("2. El atracciones más cortas Consulta de ruta... Por favor presione la tecla s(distancia más corta \ n ");
Printf("3.
Salir del sistema................................................. ................................................. ................ .................................. ................................. .............
Printf("Lista de atracciones escolares:\ n ");
Printf("1:Escuela Puerta Sur");
Printf("2:Apartamento para estudiantes"); p>
printf("3:Jardín de Berlín");
Printf("4:Restaurante"
Printf("5:Gimnasio\ n ");
Printf("6:Biblioteca");
Printf("7:Laboratorio clave"
Printf("8: Edificio principal"); /p>
Printf("9:Ke Yiyuan");
Printf("10: Apartamento para estudiantes de Defensa Nacional \n ");
Printf("Seleccione un servicio:");
scanf("\n%c ",k);
Cambiar (k)
{
Caso "I":
Printf("Ingrese la consulta de información del lugar escénico:");
Introducción (
Descanso; >Caso:
Printf("Ingrese la consulta de ruta más corta:");
distancia más corta();
Descanso;
Case "e":
Salir(0);
Predeterminado:
Printf("¡La información ingresada es incorrecta!\nIngrese la letra I o S o e,\n ");
Descanso;
}
}
}/*principal*/
void introducción()
{/*Introducción a la atracción*/
int a;
p>
Printf("¿Qué atracción prefieres? ¿Quieres comprobarlo específicamente? Introduce el número de atracción: ");
scanf("%d ", a);
getchar();
printf. (" \ n ");
Interruptor (a)
{
Caso 1:
Printf("1: Puerta Sur de la Escuela\n\nHay una majestuosa estatua de piedra de Peng Dehua en la entrada principal de la escuela.\ n \ n "); Pausa;
Caso 2:
Printf ("2: Donde se concentran los pisos de estudiantes. \ n \ n "); Descanso;
Caso 3:
Printf("3: Jardín de Berlín\ n \ n \ nUn lugar para leer y hacer ejercicio por la mañana. \ n \ n "); Descanso;
Caso 4:
Printf("4: Restaurante\ n \ nUn lugar donde comen estudiantes y profesores\ n \ n "); Descanso;
Caso 5:
Printf("5: Gimnasio\ n \ nGimnasio \ n \ nUn lugar para que los estudiantes tomen clases de educación física y hagan ejercicio, incluidos campos de atletismo, campos de fútbol y canchas de baloncesto
Caso 6:
printf(" 6:Biblioteca \ n \ n \nEl centro de recursos de información de la escuela tiene una gran cantidad de salas de estudio. . \ n \ n " ); Descanso;
Caso 7:
Printf("7: Laboratorio Clave de nuestra escuela\ n \ nCentro de Investigaciones e Investigaciones\ n \ n ") ; Descanso;
p>Caso 8:
Printf("8: Edificio principal\ n \ n \El edificio principal de la oficina administrativa de la escuela.
\n \n "); Descanso;
Caso 9:
Printf("9:Yike Garden\ n \n \Aquí hay una cafetería y una sala de proyecciones.\ n \ n \ n "); break;
Caso 10:
Printf("10: Apartamento de Estudiantes de Defensa\n\nResidencia del Estudiante de Defensa.
\ n \ n "); Descanso;
Valor predeterminado:
Printf("¡Ingreso incorrecto del número de atracción! Ingrese 1->Cantidad 10!\ n \ n ") ;Pausa;
}
}/*Introducción*/
intshortdistance()
{/*Encuentra uno de los dos atracciones La distancia más corta entre */
int i, j;
Printf("Ingrese los números de los dos lugares escénicos a consultar (1-> el número 10 usa ' ,'intervalo):";
scanf("%d,%d ",I,j);
If (i & gtn | | i & lt= 0 | | j & gtn | | j & lt0)
{
Printf("¡La información ingresada es incorrecta!\ n \ n ");
Printf( "Ingrese los números de los dos lugares escénicos que desea consultar (1-> numere los 10 números con intervalos ','):\n ");
scanf("%d, %d " , I, j);
}
Otros
{
floy ed();
Pantalla ( I, j);
}
Regreso 1;
}/*Distancia más corta*/
Floyed hueco()< / p>
{/*Utilice el algoritmo floyed para encontrar el camino más corto entre dos lugares escénicos*/
int i, j, k
for(I = 1; i & lt= n; i++)
for(j = 1; j & lt= n; j++)
{
Más corto[I][j ] =coste[I][j];
ruta[I][j]= 0;
}
for(k = 1;k & lt = n;k++)
for(I = 1;i<= n;i++)
for(j = 1;j<= n;j++)
if(shortest[I][j]& gt;(shortest[i][k]+shortest[k][j])
{/*Usa la ruta[][] para registrar el precursor número de lugar escénico del punto J en el camino más corto de I a J*/
Shortest[I][j]=shortest[I][k]+shortest[k][j];
ruta[I][j]= k;
ruta[j][I]= k;
}
}/*floyed */
Visualización vacía (int i, int j)
{/*Imprime la ruta y la distancia más corta de dos lugares escénicos*/
int a, b;
a = I;
b = j;
Printf("El camino más corto entre los dos lugares escénicos que desea consultar es:\ n \ n " );
if (más corto[i][j]! =INT_MAX)
{
if (i & ltj)
{
printf("%d ", b);
while(path[i][j]!=0)
{/*Imprime todos los lugares panorámicos de la ruta I a J en orden inverso*/
printf ("<-%d", ruta[I][j]);
if (i<j)
j = ruta[I][j];
Otros
I = ruta[j][I];
}
printf(" & lt;-%d" , a);
printf(" \ n \ n ");
printf("(% d-& gt; %d) La distancia más corta es: %d metros\ n\ n ", un
, b, más corto [a][b]);
}
Otros
{
printf("%d ", a);
while(path[i][j]!=0)
{/*Imprime todos los lugares panorámicos de la ruta I a J en orden*/< /p >
printf("->%d", ruta[I][j]);
if (i<j)
j = ruta[I] [ j];
Otros
I = ruta[j][I];
}
printf("-& gt ; %d", b);
printf("\n\n");
printf("(%d->%d)La distancia más corta es:% 5d m \n\n ", a, b, más corto [a][b]);
}
}
Otros
Printf("¡Error de entrada! ¡Esta carretera no existe! \ n \ n ");
printf(" \ n "); p>