Red de conocimiento informático - Conocimiento del nombre de dominio - ¡Estoy buscando urgentemente el código del programa, C, C, el entorno JAVA es aceptable!

¡Estoy buscando urgentemente el código del programa, C, C, el entorno JAVA es aceptable!

¿Quiere mejorar el sistema de guía turística del campus usted mismo?

/*Programa de guía turística del campus*//*[Descripción del problema]

Utilice una cuadrícula no direccional para representar el Plano escolar de las atracciones del campus. Los vértices de la figura representan las principales atracciones.

Almacenamiento de números de atracción, introducciones y otra información. Los bordes de las atracciones en la figura representan los caminos entre las atracciones. información como la longitud de los caminos. Se requiere poder responder preguntas sobre presentaciones de atracciones, rutas turísticas, etc.

A través de la terminal, los turistas pueden preguntar:

(1) El camino más corto de una atracción a otra.

(2) Los visitantes ingresan desde el parque y eligen la ruta óptima.

(3) Permitir a los turistas visitar los lugares escénicos sin repetirlos y finalmente regresar a la salida (la salida está justo al lado de la entrada).

[Requisitos básicos]

(1) Trate el mapa de la guía turística como un gráfico ponderado no dirigido, donde los vértices representan los lugares escénicos del parque y los bordes representan los caminos entre los lugares escénicos,

Los pesos en los bordes representan distancias. Elija una estructura de datos adecuada para el gráfico.

(2) Muestra varios caminos a los turistas, y los turistas pueden elegir su propia ruta de navegación.

(3) Dibujar el mapa de distribución de lugares escénicos en la pantalla.

[Consejos de implementación]

(1) Construya un gráfico no dirigido G y guárdelo con una matriz de adyacencia.

(2) Utilice el algoritmo de Dijkstra para calcular el camino más corto desde el punto inicial hasta cada vértice, registrado con una matriz bidimensional p[i][].

La longitud de la ruta más corta se almacena en la matriz unidimensional d[i]; el rango de i es 0-20.

(4) Genere la ruta más corta y la longitud de la ruta según el punto inicial y el punto final.

*/

#define INFINITY 10000 /*infinity**/

#define MAX_VERTEX_NUM 40

#define MAX 40 p>

#includelt;stdlib.hgt;

#includelt;stdio.hgt;

#includelt;conio.hgt;

# includelt; string.hgt;

typedef struct ArCell

{

int adj; //longitud de la ruta

}ArCell, AdjMatrix[ MAX_VERTEX_NUM] [MAX_VERTEX_NUM];

typedef struct //Los vértices en el gráfico representan las principales atracciones y contienen información como el número, el nombre y una breve descripción de la atracción,

{

nombre de char[30];

int num;

introducción de char[100]; //introducción

}infotipo;

introducción de caracteres[100]; p>

estructura typedef

{

infotipo vexs[MAX _VERTEX_NUM];

AdjMatrix arcos;

int vexnum, arcnum ;

}MGraph;

MGraph b;

void cmd(void);

MGraph InitGraph(void);

void Menu(void);

void Browser(MGraph *G);

void ShortestPath_DIJ(MGraph * G);

void Floyd( MGraph *G );

búsqueda vacía(MGraph *G

int LocateVex(MGraph *G, char* v);

MGraph * CreatUDN( MGraph *G);

void print(MGraph *G);

/********* *************** ************************************* */

void main(void)

{

system("color 1f");

system(" modo con: cols=140 líneas=130");

cmd() ;

}

/************** ********************** **********************/

void cmd( void)

{

int i;

b=InitGraph();

M

enu();

scanf("d",amp;i);

while(i!=5)

{

cambiar(i)

{

caso 1: sistema("cls"); Navegador(amp; b); caso 2: sistema("cls"); ShortestPath_DIJ(amp; b); break

caso 3: sistema("cls"); ; romper;

caso 4: sistema("cls"); Buscar(amp; b); romper;

predeterminado: descanso

}

scanf("d", amp; i); p>}

MGraph InitGraph(void)

{

MGraph G

int i, j

G.vexnum=10;

G.arcnum=14

for(i=0; ilt; G.vexnum; i )

G .vexs[i].num=i;

strcpy (G.vexs[0]. Nombre, "Cantina Integral"); Introducción, "Nueva cantina estandarizada");

strcpy (G.vexs[1]. Nombre, "Edificio de oficinas Este-Oeste"); ]. G.vexs[3].name, "Hospital");

strcpy(G.vexs[3].introduction, "El hospital del campus, las instalaciones no son muy completas, solo puede tratar enfermedades menores y los cargos son relativamente caros ");

strcpy(G.vexs[4].name, "Library");

strcpy(G.vexs[5] .introducción, "Edificio de dormitorios para niños de informática, edificio de estilo soviético");

strcpy(G.vexs[6].name, "Biblioteca")strcpy(G.vexs[5].name, "Biblioteca");

p>

strcpy(G.vexs[6].name, "Biblioteca");

strcpy(G.vexs[4].introducción, "Colección"); de 600.000 libros, instalaciones completas, sala de lectura electrónica del 2 edificio, ambiente elegante");

strcpy(G.vexs[5]. Nombre, "Edificio principal de enseñanza");

strcpy(G.vexs[7] .Introducción, "El edificio de enseñanza más grande de la universidad, ****5 pisos, edificio en forma de anillo, adecuado para el aprendizaje"); [8].nombre, "Edificio de enseñanza occidental");

strcpy(G.vexs[8].introducción, "El segundo edificio de enseñanza más grande de la universidad, ambiente deficiente");

strcpy(G.vexs[9].name, "Edificio Multimedia");

strcpy(G.vexs[9].

G.arcs[i][ j].adj= INFINITO;

G.arcs[

0][1].adj=100;

G.arcs[0][2].adj=200;

G.arcs[0][6].adj= 400;

G.arcos[1][7].adj=300

G.arcos[2][3].adj=120; > G.arcs[3][6].adj=220;

G.arcs[3][4].adj=100;

G.G.arcs[4][5 ].adj=300;

G.arcs[4][9].adj=250;

G.arcs[5][9].adj=350;p>

G.arcs[6][7].adj=60;

G.arcs[3][6].adj=220; .arcs [3][4].adj=100;

G.adj=60;

G.arcs[6][9].adj=200;

G.arcs[7][8].adj=50

G.arcs[8][9] .adj=20; 0; ilt; G.vexnum; i )

for(j=0; jlt; G.vexnum; j )

G.arcs[j][i].adj= G. arcs[i][j].adj;

return G

}//InitGraph end

void Menu()

{

printf("\n \n Mapa guía del Instituto Ferroviario de Shijiazhuang\n"); ━━ ━━━━━━┓\n");

printf("┃ 1. Explorar el panorama del campus┃n");

printf("┃ 2. Ver todas las rutas de viaje ┃n");

printf("┃ 3. Seleccione el punto de inicio y el punto final ┃n");

printf("┃ 4. Ver información de atracciones ┃n ");

p>

printf("┃5.Salir del sistema┃n");

printf("쑗━━━━━━━━━━ ━━━━━━━━━━ ┃ \n");

printf("Opción-:");

}

void Browser( MGraph *G)< G-gt; vexnum; v )

printf("┃-4d┃-16s┃-56s┃n", G-gt; vexs[v].num, G-gt ; vexs[v].nombre, G-gt ; vexs[v].introducción);

printf("◈━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━ ━━━━━━━ ◈\n");

}

// El algoritmo de Dijestra calcula el camino más corto entre el inicio punto y cada vértice, v0 es el punto de partida

void ShortestPath_ DIJ(MGraph * G)

{

int v, w, i, min, t =0, x, bandera=1, v0;

p>

int final[20], D[20], p[20][20];

{

printf("

Ingrese un número de atracción inicial ");

"Ingrese un número de atracción inicial: ");

scanf("d",amp; v0);

if(v0lt;0||v0gt;G-gt;vexnum)

{

printf("¡El número de atracciones no existe! Por favor Vuelva a ingresar el número de atracción: ");

scanf("d",amp; v0);

}

if(v0gt;=0amp; amp; v0lt; v )

{

final[v]=0;

D[v]=G-gt;

p>

for(w=0;wlt;G-gt;vexnum;w)

p[ v][w]=0;

if(D[v ]lt;INFINITY)

{

p[v][v0]=1; p[v][v]=1; >

}

}

}

D[v0]=0; final[v0]=1; (i=1; i lt ; G-gt; vexnum; i )

{

min=INFINITY

for(w=0; wlt; G-gt; vexnum; w )

if(!final[w])

if(D[w]lt; min){v =w; ];}

final[v]=1;

for(w=0;wlt;G-gt;vexnum;w)

if(! final[w]amp;amp ;(min G-gt; arcs[v][w].adjlt; D[w] ))

{

D[w]= min G-gt; arcos[ v][w].adj;

for(x=0;xlt;G-gt;vexnum;x)

p[w][ x]=p[v] [x];

p[w][w]=1

}

}

for(v=0; vlt; G-gt; vexnum; v )

{

if(v0! =v) printf("s",G-gt; vexs[v0].nombre);

for(w=0;wlt;G-gt;vexnum;w)

{

if(p[v][w]amp;amp;w!=v0) printf("--gt;s",G-gt;vexs[w].nombre);

t;

}

if(tgt; G-gt. vexnum-1amp; amp; v0!=v)printf(" longitud total de la ruta dm\ n\n", D[v]);

}

}

}//ShortestPath_DIJ end

void Floyd(MGraph *G)

{

int v, u, i, w, k, j, bandera=1, p[10][10][10], D[10][10];

for(v=0; vlt; G-gt; vexnum; v )

for(w=0; wlt; G-gt; vexnum; w )

{

D[v][w]=G-gt; arcos[v][w].adj

for(u=0; ult; G-gt; vexnum; ; u )

p[v][w][u]=0

if(D[v][w]lt;INFINITY)

{

p[v][w][v]=1; p[v][w][w]=1

}

}

for(u=0;ult;G-gt;vexnum;u )

for(v=0;vlt;G-gt;vexnum;v )

for(w=0;wlt;G-gt;vexnum;w)

if(D[v][u] D[u][w]lt;D[ v][w])

{

D[v][w]=D[v][u] D[u][w];

for(i=0;ilt;G-gt;vexnum;i)

p[v][w][i]=p[v][u][i]||p[u ][w][i] ;

}

while(flag)

{

printf("Ingrese el punto de partida y número de punto final: ");

scanf("dd",amp;k,amp;j);

if(klt;0||kgt;G-gt; vexnum| |jlt;0||jgt;G-gt;vexnum)

{

printf("¡El número de atracción no existe! Vuelva a ingresar los números de salida y destino: ") ;

scanf("dd",amp;k,amp;j);

}

if(kgt;=0amp;amp;klt ;G -gt;vexnumamp;amp;jgt;=0amp;amp;jlt;G-gt;vexnum)

flag=0;

}

printf( "s",G-gt; vexs[k].nombre);

for(u=0;ult;G-gt;vexnum;u)

if( p[ k][j][u]amp;amp;k!=uamp;amp;j!=u)

printf("--gt;s",G-gt;vexs[u ]. nombre);

printf("--gt;s",G-gt;vexs[j].nombre);

printf("Ruta total). longitud dm \n", D[k][j]);

}//Floyd end

void Search(MGraph *G)

{

int k, flag=1;

while(flag)

{

printf("Ingrese el número de atracción que desea

para buscar: ");

scanf("d",amp;k);

if(klt;0||kgt;G-gt;vexnum)

{

printf("¡El número de atracción no existe! Vuelva a ingresar el número de atracción: ");

scanf("d", amp; k);

p>

}

if(kgt;=0amp;amp;klt;G-gt;vexnum)

flag=0;

}

printf("┏ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━ ━━━┓ \n");

printf("┃Número┃Nombre de la atracción ┃Perfil ┃\n");

printf("┃-4d┃-16s┃- 56s┃\n ", G-gt; vexs[k].num, G-gt; vexs[k].nombre, G-gt; vexs[k].introducción);

printf(" ┗━━┻ ┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━\n");

} /Fin de la búsqueda

int LocateVex(MGraph *G, char* v)

{

int c=-1, i; p>

for(i=0;ilt;G-gt;vexnum;i)

if(strcmp(v,G-gt;vexs[i].name)==0)

{c=i; break;}

return c;

}

MGraph * CreateUDN(MGraph *G)//inicializar el gráfico, acepta la entrada del usuario

{

int i, j, k, w

char v1[20], v2[20]; p>

printf("Ingrese el número de vértices y arcos del gráfico: ");

scanf("dd", amp; G-gt; vexnum, amp; G-gt; arcnum);

printf("Ingrese el número de la atracción:, nombre, descripción:\n"

for(i=0; ilt; G-gt; vexnum; i )

{

printf("Número de atracción: ");

scanf("d", amp; G-gt; vexs-gt; num

p>

printf("Nombre de la atracción: ");

scanf("s", G-gt; vexs[i].nombre); p>

printf("Introducción a la atracción: ");

scanf("s", G-gt; vexs-gt; introducción

}

);

for(i=0; ilt; G-gt; vexnum; i )

<

p> for(j=0;jlt;G-gt;vexnum;j)

G-gt;arcs[i][j].adj=INFINITY;

printf( "Ingrese la longitud de la ruta:\n");

for(k=0;klt;G-gt;arcnum;k)

{

printf ("dth edge:\n", k 1);

printf("Pares de atracciones (x, y):

scanf(" s", v1);

scanf("s", v2);

printf("longitud de la ruta:

scanf("d", amp; w);

i=LocateVex(G, v1);

j=LocateVex(G, v2);

if(igt;=0amp; amp;jgt;=0)

{

G-gt; arcos[i][j].adj=w

G-gt; [j][i]=G-gt; arcos[i][j];

}

}

return G;

}

void print(MGraph *G)

{

int v, w, t=0

<; p>for(v=0;vlt;G-gt;vexnum;v)

for(w=0;wlt;G-gt;vexnum;w)

{ si (G-gt; arcos[v][w].adj==INFINITY)

printf("∞ ");

else printf("-7d",G-gt ; arcos[v][w].adj);

t ;

if(tG-gt; vexnum==0)

printf("\ n");

}

}