Está en la página 1de 12

UNA_______________________________________________________Trabajo Prctico Computacin II

Estructura de Datos tipo Grafo (Diseo del trazado de rutas areas)

Cargar rutas areas en archivo de texto

Almacenar rutas en nodos tipo lista

Buscar en lista pas de salida

Solicitud de pas de salida y de llegada

Buscar en lista pas de llegada

Trazado de ruta area

UNA_______________________________________________________Trabajo Prctico Computacin II

Figura 1

T1

A1

B1

S1

B2

R1

UNA_______________________________________________________Trabajo Prctico Computacin II

TAD GRAFO

Leer archivo texto Grafo Cargar texto en lista

Localizar pases en lista

Trazar ruta de vuelo

!ntroducir pas de salida y llegada

OPERACIN Leer archivo texto Cargar texto en lista !ntroducir pas de salida y llegada Localizar pases en lista Trazar ruta de vuelo

DESCRIPCION Carga en memoria un archivo de texto con las rutas areas. Crea una lista con el contenido del archivo de texto almacenando en cada nodo las rutas areas. Carga el pas de salida y de llegada Busca los pases en las rutas almacenadas en cada nodo de la lista Calcula la ruta de vuelo con el menor numero de conexiones posi"les

UNA_______________________________________________________Trabajo Prctico Computacin II

ATRI! AD"ACENCIA

&

% &

$ $ $ $ $ $

% $ $ % $ $

$ $ $ % % %

$ % % $ % $

$ % % % $ %

$ $ % $ % $

'
#

( ) *

UNA_______________________________________________________Trabajo Prctico Computacin II

TAD' (ista +peraciones, CrearLista, - Lista Crea una lista vaca. .rimero, Lista - .osicion /evuelve la posici0n del primer elemento de la lista. Siguiente, Lista x .osicion - .osicion /ada una posici0n p en la lista devuelve la posici0n del elemento situado a continuaci0n. /ato, Lista x .osicion - Tipo"ase /ada una posici0n en la lista devuelve el dato 1ue contiene. Almacenar, Lista x Tipo"ase - Lista /ado un dato e lo a2ade a la lista como 3ltimo elemento. Buscar, Lista x Tipo"ase - .osicion /ado un dato e lo "usca en la lista y devuelve la posici0n 1ue ocupa. Longitud, Lista - 4ntero /ada una lista devuelve su longitud. Trazar ruta, - Lista - .osicion - string Localiza el menor numero de conexiones entre el pais de llegada con el de salida

UNA_______________________________________________________Trabajo Prctico Computacin II

CODIGO F)ENTE 5/esarrollado por 666666666666666666 program aerolineas_L78+9: uses crt: type vector# array;%..)$< o= string: tnodo # >nodo: nodo # record paises,string: ruta,integer: prox,tnodo: end: var i,integer: =txt,text: aux% aux& lista,tnodo: cad cad&,integer: linea salida llegada op,string: v% v& v',vector: 56666666666666666666666666666666? procedure imprimirlista@lista,tnodoA: var aux,tnodo: "egin aux ,# lista: 5nos situamos al principio de la lista? Briteln@C!mprimiendo estructura de datos..CA: Bhile @aux DE nilA do "egin Briteln@aux>.paisesA: aux,#aux>.prox: end: end: 5666666666666666666666666666666666666666666666666? procedure insertarnuevo@var l,tnodo: elem,stringA: var nuevo,tnodo: "egin neB@nuevoA: nuevo>.paises,#elem: nuevo>.prox,# l: l,#nuevo: end: 566666666666666666666666666666666666666666666666? procedure cargarutas@var lista,tnodoA: var archivo,text: x,string:

UNA_______________________________________________________Trabajo Prctico Computacin II

aux aux&,tnodo: i,integer: "egin i,#$: assign@archivo Cc,FluxorFpaises.txtCA: reset@archivoA: lista ,# nil: Bhile not eo=@archivoA do "egin i,#iG%: readln@archivo xA: neB@auxA: aux>.paises,# x: aux>.ruta,#i: Briteln@C9uta C aux>.ruta C C xA: delay@%)$A: i= @lista # nilA then "egin lista,#aux: aux&,#lista: end else "egin aux&>.prox,#aux: aux&,#aux&>.prox: end: end: aux&>.prox,#nil: close@archivoA: Briteln: end: procedure ca"ecera: "egin clrscr: Briteln: Briteln@C666666 A49+lineas Luxor 666666CA: Briteln: Briteln@C...... Control 9utas aereas ......CA: Briteln@C..................................CA: Briteln: Briteln@CHE Cargando lista 9utas de vuelo...@paises.txtACA: delay@%$$$A: Briteln:

UNA_______________________________________________________Trabajo Prctico Computacin II

end: 56666666666666666666666666666666666666666666666666666666666? procedure IASI_llegada@var lista,tnodo: rutapos celda,integer: salida llegada,stringA: var 1,tnodo: ciudad cadena scan,string: i J K m max conex sB rutaposl r%,integer: "egin 1,#lista: cadena,#CC: ciudad,#CC: J,#%: K,#%: sB,#$: Bhile @1 DE nilA do "egin i= @1>.ruta E# rutaposA then "egin ciudad,#string@1>.paisesA: max,#length@ciudadA: rutaposl,#1>.ruta: =or i,# % to max do "egin cadena ,# cadena G ciudad;i<: i= @ciudad;i< D# chr@'&AA then "egin i= @cadena DE CCA then "egin v&;J<,#cadena: J,#JG%: cadena,#CC: end: end: end:5=or para armar las ciudades por separado? Briteln: Briteln@CDHH6 Localizando pais de llegada, C llegada C en ruta, C rutaposlA: Briteln: =or i,#% to J do "egin Brite@v&;i<A: end: Briteln: =or i,#% to J do "egin i= @i E# celdaA then "egin

UNA_______________________________________________________Trabajo Prctico Computacin II

i= @v&;i< # llegadaGchr@'&AA then "egin Briteln: Briteln@C666E 7"icado en el nodo C iA: Briteln: r%,#1>.ruta: sB,#%: "reaK: end else "egin 5cargando vector con las escalas? v';K<,#v&;i<: K,#KG%: end: end: end:5=or? i= @sB#$A then "egin Briteln: Briteln@C..Lo se encontro el pais de llegada en esta 9utaMCA: Briteln: end: delay@%$$A: end:5% i=? 5limpiando vector v&? =or i,#% to J do v&;i<,#CC: J,#%: 1,#1>.prox: i= @sB#%A then "egin sB,#$: "reaK: end: end:5end Bhile? Briteln@CHE .osi"le ruta de viaJe..CA: Briteln@C HHHHHHHHHHHHHHHHHHHHHHHCA: Briteln: Briteln@C.ais Salida HHHE C salidaA: Briteln: Briteln@CHE @C KH% CA 4scalas en, C Ccon las rutas, C rutapos C C r%A: Briteln: =or i,#% to K do "egin Brite@v';i<A:

UNA_______________________________________________________Trabajo Prctico Computacin II

end: Briteln: Briteln: Brite@C.ais Llegada DHHH C llegadaA: Briteln: end:5procedure? 56666666666666666666666666666666666666666666666666666666666? procedure IASI_salida@var lista,tnodo: salida llegada,stringA: var p,tnodo: ciudad cadena scan,string: i J K m max conex rutapos sB sB& celda,integer: "egin ca"ecera: Briteln: p,#lista: J,#%: m,#%: conex,#$: K,#%: cadena,#CC: ciudad,#CC: sB,#$: sB&,#$: 5"uscando el pais de salida en la lista para sa"er a 1ue ruta pertenece? Bhile @p DE nilA do "egin ciudad,#string@p>.paisesA: rutapos,#p>.ruta: max,#length@ciudadA: =or i,# % to max do "egin cadena ,# cadena G ciudad;i<: i= @ciudad;i< D# chr@'&AA then "egin i= @cadena DE CCA then "egin v%;J<,#cadena: J,#JG%: cadena,#CC: end: end: end:5=or para armar las ciudades por separado? Briteln: Briteln@CHHE Localizando pais de salida, C salida C en ruta, C rutaposA: Briteln:

UNA_______________________________________________________Trabajo Prctico Computacin II

=or i,#% to J do "egin Brite@v%;i<A: end: Briteln: =or i,#% to J do "egin i= @v%;i< # salidaGchr@'&AA then "egin Briteln: Briteln@C666E 7"icado en el nodo C iA: Briteln: celda,#i: sB,#%: sB&,#%: "reaK: end else "egin 5cargando vector con las escalas v&;K<,#v%;i<: K,#KG%:? end: end: i= @sB&#%A then "egin sB&,#$: IASI_llegada@lista rutapos celda salida llegadaA: "reaK: end else "egin i= @sB#$A then "egin Briteln: Briteln@C..Lo se encontro el pais de salida en esta 9utaMCA: Briteln: end else "egin sB,#$: end: delay@%$$A: 5limpiando vector v%? =or i,#% to J do v%;i<,#CC: J,#%:

UNA_______________________________________________________Trabajo Prctico Computacin II

p,#p>.prox: end: end:5end Bhile de la lista? Briteln: end: 5666666666666666666666666666666666666666666666? procedure inicio: "egin ca"ecera: cargarutas@listaA: Briteln: Brite@CHE Colo1ue el pais de Salida, CA:readln@salidaA: Briteln: Brite@CHE Colo1ue el pais de Llegada, CA:readln@llegadaA: Briteln: Briteln@CHE Buscando posi"les rutas...CA: delay@%$$$A: IASI_salida@lista salida llegadaA: end: B4N!L56666666666666666666666666666666666666 ppal? op,#CsC: Bhile @op#CsCA or @op#CSCA do "egin inicio: 5imprimirlista@listaA:?

56666666666666666666666666666666666666666666666666666666666666666666666? Briteln: 5Brite@CHE .resione la tecla D4LT49E para SAL!9 del programa..CA:readln:? Brite@C.94S!+L4 tecla DSOsE para continuar DLOnE para salir del programa, CA: readln@opA: i= @op#CLCA or @op#CnCA then "reaK: end:5Bhile ppal? 4L/.

También podría gustarte