Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Figura 1
T1
A1
B1
S1
B2
R1
TAD GRAFO
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
ATRI! AD"ACENCIA
&
% &
$ $ $ $ $ $
% $ $ % $ $
$ $ $ % % %
$ % % $ % $
$ % % % $ %
$ $ % $ % $
'
#
( ) *
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
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:
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:
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
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:
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:
=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,#%:
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/.