Upload
g-jhon-d-robles-lopez
View
891
Download
4
Embed Size (px)
Citation preview
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
1 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
PILAS
1.- Codificar el algoritmo de una expresión infija a expresión postfija en la herramienta de programación de laboratorio (java 6.8)package notacionpolaca;import java.io.*;import java.lang.String;
public class PrefijaPosfija { static char Pila[]=new char[60]; static int tope=0; static char sacar='0'; char Exin[]=new char[60]; char Expre[]=new char[60]; char Expo[]=new char[60]; int A, int B; char Bandera= ')'; String cadena=""; int topex=0;
public void PreProfija()throws IOException{ int op,rta=0; BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); System.out.println("Elegir Opcion a la que desea transformar" ); System.out.println(" 1. Exp Postfija "); System.out.println(" 2. Exp Prefija "); System.out.println(""); String temp = br.readLine(); op= Integer.parseInt(temp); switch (op){ case 1: System.out.println("Ingresar Expresion Infija:"); cadena= br.readLine(); for(int i=0; i<cadena.length();i++){ Exin[i]=cadena.charAt(i); System.out.println("Exin[ "+(i+1)+" ] : " +Exin[i]); } int N=cadena.length(); Exin[N]=')'; System.out.println("Exin[ n ] : " +Exin[N]);
2 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Meter('('); System.out.println(""); System.out.println("Pila[ "+tope+" ] :" +Pila[tope-1]); System.out.println("");
//Realiza la transformacion de Expresion infija a postfija// for(int i=0;i<=N;i++){ char com=Exin[i]; System.out.println("Compara : " +com); System.out.println(" "+Exin[i]); if(com=='^' | com=='/' | com=='*' | com=='+' | com=='-'){ while(Precedencia(Pila[tope-1])>=Precedencia(com)){ Expo[topex]=Sacar(); topex++; for(int k=0;k<topex;k++){ System.out.println("Expo[ "+ (k+1)+" ] : " +Expo[k]); } } if(Precedencia(Pila[tope-1])<Precedencia(com)){ Meter(com); for(int k=0; k<tope;k++){ System.out.println("Pila[ "+k+" ] :" +Pila[k]); } } }else if(com=='('){ Meter(com); }else if(com==')'){ int j=tope-1; while(Pila[j]!='('){ char aux = Sacar(); System.out.println(aux); Expo[topex] =aux; topex++; j--; } Sacar(); }else{ Expo[topex]=com; topex++; } }
3 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
System.out.println("Datos finales"); for(int k=0;k<topex;k++){ System.out.println(Expo[k]); } break; case 2: System.out.println("Ingresar Expresion Infija:"); cadena= br.readLine(); Exin[0]='('; System.out.println("Exin[ 0 ] : " +Exin[0]); for(int i=0; i<cadena.length();i++){ Exin[i+1]=cadena.charAt(i); System.out.println("Exin[ "+(i+1)+" ] : " +Exin[i+1]); } N=cadena.length();
Meter(')'); System.out.println(""); System.out.println("Pila[ "+tope+" ] :" +Pila[tope-1]); System.out.println("");
for(int i=N;i>=0;i--){ char com=Exin[i]; System.out.println("Compara : " +com); System.out.println(" "+Exin[i]);
if(com=='^' | com=='/' | com=='*' | com=='+' | com=='-'){ while(Precedencia(Pila[tope-1])>Precedencia(com)){ Expre[topex]=Sacar(); topex++; for(int k=0;k<topex;k++){ System.out.println("Expre[ "+ (k+1)+" ] : " +Expre[k]); } } if(Precedencia(Pila[tope-1])<=Precedencia(com)){ Meter(com); for(int k=0; k<tope;k++){ System.out.println("Pila[ "+k+" ] :" +Pila[k]); } } }else if(com==')'){
4 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Meter(com); }else if(com=='('){ int j=tope-1; for(int k=0; k<tope;k++){ System.out.println("Pilita[ "+k+" ] :" +Pila[k]); } while(Pila[j]!=')'){ char aux = Sacar(); System.out.println(aux); Expre[topex] =aux; topex++; j--; } Sacar(); }else{ Expre[topex]=com; topex++; } } System.out.println("Datos finales"); for(int k=topex-1;k>=0;k--){ System.out.print(Expre[k]); } break; } }
public static void Meter(char cad){ if(tope<50){ Pila[tope] = cad; tope = tope + 1; } } public static char Sacar(){ if(tope>0){ sacar = Pila[tope-1]; tope = tope -1; } return sacar; } public static int Precedencia(char ope){
5 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
int prece=0; switch (ope){ case '^': prece=5; break; case '*': prece=4; break; case '/': prece=4; break; case '+': prece=2; break; case '-': prece=2;
break; } return prece; }}
2.-codificar el algoritmo de evaluación de expresión postfija en la herramienta de programación de laboratorio (java 6.8)package exprposfija;import java.util.*;import java.lang.Math.*;public class EPosfija { Scanner entrada= new Scanner(System.in); String expre, d1=")"; int lon,i=0,j=0; char aux, d[]={')'};
public void RealizarOp(){ System.out.println("Ingresar la Expresion Posfija que desea evaluar:"); expre=entrada.next(); lon=expre.length(); double pila[]=new double[lon];
6 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
expre=expre.concat(d1); while(expre.charAt(i)!=d[0]) { aux=expre.charAt(i); switch(aux) { case '+': pila[j-2]=pila[j-2]+pila[j-1]; j--; break; case '-': pila[j-2]=pila[j-2]-pila[j-1]; j--; break; case '*': pila[j-2]=pila[j-2]*pila[j-1]; j--; break; case '/': pila[j-2]=pila[j-2]/pila[j-1]; j--; break; case '^': pila[j-2] = Math.pow(pila[j-2],pila[j-1]); j--; break; default : char aux1[]={aux}; String aux2= new String(aux1); pila[j]=Integer.parseInt(aux2); j++; } i++; } System.out.println("El resultado de la opreacion es:"+" "+pila[j-1]); }}
7 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
4.- Dado los caracteres (), [],{}, y una cadena s; s está balanceada si tiene alguno de estos formatos, s=””,(string nulo), s=(T), s={T}, s= TU en donde T y U son cadenas balanceadas (en otras palabras, para cada paréntesis , llave o corchete abierto existe un carácter de cierre correspondiente ). Ejemplo s= {(a + b) [(c - d) ^ 2]}. Escribir el algoritmo (psudocodigo) que use una PILA para ver si una cadena es balanceada.
INICIO
Leer s;esBalanceado verdadero;meter ”!” en pila;
Si s=”” entonces //s es nulo.esBalanceado verdadero;
Caso contrarioExaminar s de izquierda a derechaSi se encuentra caracter de apertura entonces
Meter en pila;esBalanceado falso;
Fin_siSi se encuentra carácter de cerradura entonces
Si carácter es de la misma precedencia que el valor del tope de la pila entonces
Sacar de pila último dato;esBalanceado verdadero;
Caso contrarioesBalanceado falso;
Fin_siFin_si
Fin_siImprimir (s+“ es balanceado: ” esBalanceado);
8 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
FIN
6.- Se tiene la siguiente formula
X=a+√b2−c3√d− e
fEscribir su forma infija, prefija y postfija correspondiente
Infija: a+((b^2-c)^(1/2))/(d^(1/3)-e/f)
Prefija: a+((b^2-c)^(1/2))/(d^(1/3)-e/f) a+(([^b2]-c)^[/12])/(d^[/13]-[/ef]) a+([-^b2c]^[/12])/([^d/13]-[/ef]) a+[^-^b2c/12]/[-^d/13/ef] a+[/^-^b2c/12-^d/13/ef] +a/^-^b2c/12-^d/13/ef
Postfija:
a+((b^2-c)^(1/2))/(d^(1/3)-e/f) a+(([b2^]-c)^[12/])/(d^[13/]-[ef/]) a+([ b2^c-]^[12/])/([d13/^]-[ef/]) a+[b2^c-12/^]/[d13/^ef-] a+[ b2^c-12/^ d13/^ef-/] a b2^c-12/^ d13/^ef-/+
9 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
7. Se tiene una pila con los 10 números naturales, y una cola con los 10 siguientes, escriba el algoritmo en pseudocódigo que utilizando las operaciones básicas para cada una de estas estructuras permita obtener la sumatoria del producto de sus datos, atendiendo la regla LIFO para la pila y FIFO para la cola.
COLA
Índice 1 2 3 4 5 6 7 8 9 10Dato 11 12 13 14 15 16 17 18 19 20
INICIOFrente = 1 Tope =10 Sumatoria = 0Final = 10 Fondo =1 N =10
Mientras (Frente = N) y (Tope > 0) hacerSi (Frente = 0) y (Tope = 0) entonces
Escribir “Pila Vacía”Caso Contrario
Sumatoria = Sumatoria + Pila [Tope] * Cola [Frente]Si (Frente = Final) entonces
Frente = 0Final = 0Tope = 0
Caso Contrario
10 Ejercicios de Pilas y Colas Estructura de Datos
PILA10 109 98 87 76 65 54 43 32 21 1
Índice
Dato
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Frente = Frente + 1Tope = Tope – 1
Fin _ SiFin _ Si
Fin _ MientrasEscribir “La sumatoria es:” + SumatoriaFIN
8.- Dado los caracteres (), [], {}, y una cadena s; s está balanceada si tiene alguno de estos formatos, s=””,(string nulo), s=(T), s={T}, s= TU en donde T y U son cadenas balanceadas (en otras palabras, para cada paréntesis , llave o corchete abierto existe un carácter de cierre correspondiente ). Ejemplo s = {[(c - d) ^ 2] + 1}. Escribir el algoritmo (psudocodigo) que use una PILA para ver si una cadena es balanceada.
INICIO
Leer s;esBalanceado verdadero;meter ”!” en pila;
Si s=”” entonces //s es nulo.esBalanceado verdadero;
Caso contrarioExaminar s de izquierda a derechaSi se encuentra caracter de apertura entonces
Meter en pila;esBalanceado falso;
Fin_siSi se encuentra carácter de cerradura entonces
Si carácter es de la misma precedencia que el valor del tope de la pila entonces
Sacar de pila último dato;esBalanceado verdadero;
11 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Caso contrarioesBalanceado falso;
Fin_siFin_si
Fin_siImprimir (s+“ es balanceado: ” esBalanceado);
FIN
COLAS
1. Se considera una cola frente a una ventanilla en la cual si un cliente al llegar a la misma no puede ser atendido, se le reintegra a la cola a la posición nº 10, si hay más de 10 personas, o al final de la misma, en caso contrario. Se pide diseñar un procedimiento de ATENCION (lo que debe suceder cuando un cliente es atendido), REINGRESO (vuelta a la cola) y otro de INGRESO (inicial) en cola. Todo ello con vistas a que el reingreso sea sencillo, para lo que se sugiere controlar el nº de personas en la cola, y en su caso, un puntero al elemento adecuado de la cola para ejecutar el reingreso.
//Procedimiento de ingreso
INICIO Frente 0, final 0;Leer clienteSi final = n entonces
Escribir “Cola llena”Caso contrario
final final + 1cola[final] clienteptr final – frente + 1
12 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
si frente = 0 entoncesfrente 1ptr final
fin sifin si
FIN
//Procedimiento de AtenciónINICIO
si No puede ser atendido entoncesLlamar al Procedimiento Reingreso
caso contrariosi frente = 0 entonces
escribir “cola vacia”caso contrario
cliente cola[frente]si frente = final entonces
frente 0 , final 0caso contrario
frente frente + 1fin-sirepetir desde i 1 hasta n – 1
cola[i] cola[ i+1] fin-repetirfrente 1final final – 1
fin-sifin-si
FIN
//Procedimiento reingreso
INICIOtope 0si final <= 10entoncesfinal final + 1cola [final] cola[frente]caso contrario
repetir desde j= ptr hasta 10tope tope + 1
13 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
pila[tope] cola[j]fin_repetircola[10] cola [frente]p toperepetir desde k=1 hasta tope
cola[10+k] pila[p]p tope-1
fin_repetirfin_sirepetir desde i=1 hasta n-1
cola[i] cola[i+1]fin_repetir
frente 1final final – 1
FIN
2. Un ascensor está situado en un edificio de N plantas (la planta baja es la 0) y responde a dos tipos de peticiones de funcionamiento: las de los usuarios que están dentro del ascensor (peticiones internas) y las de lo están fuera (peticiones externas). Estas últimas solo serán atendidas cuando no haya peticiones internas. Los dos tipos de peticiones se gestionan independientemente y responden a criterios de temporalidad, de manera que las llamadas van siendo atendidas según el orden de solicitud. Con este planteamiento, hay que escribir un programa que simule el funcionamiento del ascensor de forma que las peticiones se realicen mediante pulsaciones de teclado y, “al mismo tiempo”, mover el ascensor a los pisos que se van solicitando. Se distinguirá entre peticiones interiores y exteriores según las teclas pulsadas (teclas: 0, 1, 2, … N, indican peticiones interiores a dichos pisos; teclas: -0, -1, -2, …, -N, indican peticiones exteriores en el mismo orden), la tecla ‘N+1’ se reserva para finalizar la simulación. La visualización del proceso se puede realizar utilizando un método MOVER _ ASCENSOR que muestra por pantalla el movimiento del ascensor. Este método responde al siguiente perfil: MOVER _ ASCENSOR (desde, hasta: 0…N); donde desde indica la posición actual del ascensor y hasta, el piso al que debe ir.
14 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
INICIO leer petsi pet = n + 1 entonces
finaliza simulación caso contrario
si pet es interna entoncesfrente i 0, final i 0leer xsi final i = n entonces
escribir “cola llena : no hay lugares para peticiones internas”
caso contrariofinal i final i + 1cola[final] x
fin_sisi frente i = 0 entonces
frente i 1fin_sillamar a procedimiento cumplir_orden i
caso contarriofrente e 0,final e 0leer xsi final e = n entonces
escribir “cola llena : no hay lugares para peticiones externas”
caso contrariofinal e final + 1cola[frente] x
fin_sisi frente e = 0 entonces
frente 1fin_sillamar a procedimientos cumplir_orden e
fin_sifin_si
FIN
15 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
// Procedimento cumplir_orden i
INICIOPiso_actual 0Repetir
Piso_destino cola[frente i]Hasta que (frente i = 0)RepetirSi frente i = final i entonces
Frente i 0Final i 0
Caso contrarioFrente i frente i + 1
Fin_siPiso_actual piso_destino
Hasta piso_destinoFIN
//Procedimiento cumplir_orden e
INICIOPiso_actual 0Repetir
Piso_destino cola[frente e]Hasta que (frente e = 0)RepetirSi frente e = final e entonces
Frente e 0Final e 0
Caso contrarioFrente e frente e + 1
Fin_si
16 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Piso_actual piso_destinoHasta piso_destino
FIN
3. Considera que palabra es una palabra de tipo Cola que contiene la entrada del usuario por teclado, P una pila de caracteres y el siguiente algoritmo:
1. Mientras haya mas caracteres en palabra hacer 2. apilar el primero de la cola en la pila P3. sacar de la cola4. Fin_Mientras5. Mientras la pila P no sea vacia hacer 6. Escribir la cima de P7. Desafilar de P8. Fin_mientras
¿Cuál es la salida para la entrada “examen”?
INICIO Datos iniciales
Frente = -1 ; N Final = -1 ; Tope = 1
//Algoritmo para meter los caracteres
Si Frente = -1 entoncesEscribir “Cola vacía”Frente =1
17 Ejercicios de Pilas y Colas Estructura de Datos
1 2 3 . . . . N
N
3
2
1
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Final =1 Cola [Frente]=carac
SinoSi Final = N entonces
Escribir “Cola llena”Sino
Final = Final +1Fin_Si
Fin_Si
// Algoritmo para Sacar un caracter de Cola y ponerlo en Pila
Mientras Frente <= Final hacerPila [Tope] = Cola [Frente]Frente = Frente +1Tope = Tope +1
Fin_Mientras
//Algoritmo para Sacar de Pila un caracter y mostrarlo
Mientras tope <> 0 hacerEscribir “Pila[Tope]”Tope = Tope – 1Si Tope = 0 entonces
Tope = -1Frente = -1Final = -1
Fin_SiFin_Mientras
FIN N = 6
frente
final Cola[frente] Cola[final]
-11
-112345
exame
exame
18 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
67
n n
Tope
Pila[Tope]
6543210
nemaxe
La salida es: nemaxe
4. Escribe el algoritmo en pseudocódigo que lea una cadena de caracteres del teclado y decida si es palíndromo, es decir, si se lee igual de izquierda a derecha que de derecha a izquierda. Impleméntalo después en el Lenguaje de programación de su dominio. Ejemplo: daba le arroz a la zorra en el abad es palíndromo.
INICIO
19 Ejercicios de Pilas y Colas Estructura de Datos
Final Frente Tope Pila[tope]
Cola[frente]
6 1234567
123456
examen
examen
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
N ← Cantidad de caracteresi ← 1, j ← N , Band ← 1
Hacer Mientras (i < j y Band = 1)Si caracter(i) <> caracter(j) entonces
Band ← 0Fin_SiI ← i + 1J ← j + 1
Fin_Mientras
Si Band = 1 entoncesEscribir “Es Palíndromo”
SinoEscribir “No es Palíndromo”
Fin_SiFIN
5. Un estacionamiento de las avionetas de un aeródromo es en línea, con una capacidad hasta 12 avionetas. Las avionetas llegan por el extremo izquierdo y salen por el extremo derecho. Cuando llega un piloto a recoger su avioneta, si ésta no esta justamente en el extremo de salida (derecho), todas las avionetas a su derecha han de ser retiradas, sacar la suya y las retiradas colocadas de nuevo en el mismo orden relativo en que estaban. La salida de una avioneta supone que las demás se mueven hacia delante, de tal forma que lo espacios libres del estacionamiento estén por la parte izquierda. Escribia el algoritmo (Pseudocódigo) para emular este estacionamiento tiene como entrada un carácter que indica una acción sobre la avioneta, y la matricula de la avioneta. La acción pude ser, llegada (E) o salida (S) de avioneta, En la llegada puede ocurrir que el estacionamiento este lleno, si es así la avioneta espera hasta que quede una plaza libre, o hasta que se dé la orden de retirada (salida).Algoritmo para llegada de Aviones
INICION ← 12FINAL ← 0Leer AVION
Si FINAL >= N entonces
20 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Escribir “Estacionamiento lleno”Sino
FINAL ← FINAL + 1Fin_Si
FIN
//Algoritmo para la salida de las Aviones
INICIOIngrese POSICION de la AvionSi FINAL <= 0 Entonces
Escribir “No hay Aviones para salir”Sino
Si POSICION = 1 EntoncesSi FINAL = 1 Entonces
COLA[POSICION] ← VacioFINAL ← FINAL -1
SinoCOLA[POSICION] ← VacioARREGLARPOSICION /* ProcedimientoFINAL ← FINAL -1
Fin_SiSino
SACAR /* ProcedimientoCOLA[POSICION] ← VacioLLENAR /* ProcedimientoFINAL ← FINAL – 1
Fin_SiFin_Si
FIN // Fin de salida de Aviones
PROCEDIMIENTOS ( ):
ARREGLAR POSICION:
21 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
i = 1Mientras i<= FINAL – 1 hacer
COLA[i] ← COLA[i + 1]COLA[i + 1] ← Vacio i = i+1
Fin_MientrasFIN_ARREGLARPOSICION
//SacarSACAR
i = 1Mientras i<= POSICION – 1 hacer
COLAAUX[i] ← COLA[i]COLA[i] ← Vacioi = i+1
Fin_MientrasFIN_SACAR
LLENAR:
i = 1Mientras i <= POSICION – 1 hacer
COLA[i] ← COLAAUX[i]i = i+1
Fin_MientrasCOLAAUX ← VacioSi FINAL > POSICION entonces
i = 1Mientras i <= FINAL – 1 hacer
COLA[i] ← COLA[i+1]COLA[i+1] ← Vacio
Fin_MientrasFin_Si
FIN_LLENAR
22 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
6. Elabore el pseudocódigo de las operaciones METER Y SACAR de una bicola, donde la cola de un extremo guarda códigos de Radios y la del otro extremo códigos de televisores.
//Algoritmo Insertar
FinalD ← 0 Finall ← 1
INICIO:
Verificar Opcion: Leer x //DatoSi Opcion = Derecha entonces
Si FinalD >= N entonces Escribir “Cola llena”
SinoFinalD ← FinalD + 1Cola(FinalD) ← x
Fin_SiSi FinalD > 0 y Finall <= 0 entonces
Escribir “No se puede insertar”Sino
Si FinalD <= 0 entonces Cola(1) ← xFinalD ← 1
SinoSi Finall > 1 entonces
Finall ← Finall -1Cola(Finall) ← x
SinoEscribir “No se puede insertar”
Fin_SiFin_Si
Fin_SiFin_Si
FIN
23 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
//Algoritmo Eliminar
INICIOSi Finall > FinalD ó FinalD <= 0 ó Finall >= 0 entonces
Escribir “Cola Vacia”FinalD ← 0, Finall ← 1
SinoVerificar Opcion(Izq/Der)Si Opcion es Derecha entonces
x ← Cola(FinalD)FinalD ← FinalD – 1
Sino // Será Opcion Izquierdax ← Cola(Finall)Finall ← Finall + 1
Fin_SiFin_Si
FIN
7. En un archivo de texto se encuentran los resultados de una competición de tiro al plato, de tal forma que en cada línea se encuentra Apellido, Nombre, número de dorsal y número de platos rotos. Se debe escribir el algoritmo (Pseudocódigo), que lea el archivo de la competición y determine los tres primeros. La salida ha de ser los tres ganadores y a continuación los concursantes en el orden en que aparecen en el archivo (utilizar la estructura cola).
//Algoritmo Para Insertar Datos
Fin1 = Fin2 = Fin3 = Fin4 = 0
INICIO
Ingrese Datos [Apellidos (Ap), Nombre (Nom), Numero de dorsal (Dor), Platos rotos (Plat)]
Ingrese numero de Datos (N>3)Si Fin4 >= N entonces
Escribir “Cola llena”Sino
24 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Fin1 ← Fin1 + 1Fin2 ← Fin2 + 1Fin3 ← Fin3 + 1Fin4 ← Fin4 + 1Cola1 [Fin1] ← ApCola2 [Fin2] ← NomCola3 [Fin3] ← DorCola4 [Fin4] ← Plat
Fin_SiFINAlgoritmo para buscar los tres primeros mayores
INICIO
i ← 1Mientras (i <=3) hacer
i ← i+1May = Cola [1]j ← 1Mientras k=2 <= Fin4 hacer
Si May < Cola4 [k] EntoncesMay ← Cola4 [k]j ← k
Fin_Sik ← k + 1
Fin_MientrasEscribir:Cola1 [j], Eliminar Cola1 [j]Cola2 [j], Eliminar Cola2 [j]Cola3 [j], Eliminar Cola3 [j]Cola4 [j], Eliminar Cola4 [j]
Fin_Mientras
L = 1Mientras L <= Fin4 hacer
Si Cola4 [L] <> Vacio EntoncesEscribir :Cola1 [L]Cola2 [L]Cola3 [L]
25 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Cola4 [L]Fin_SiL ← L + 1
Fin_MientrasFIN
8. El despegue de aeronaves en un aeropuerto se realiza siguiendo el orden establecido por una cola de prioridades. Hay 5 prioridades establecidas según el destino de aeronave. Destino de menos de 500 km tienen la máxima prioridad, prioridad 1, entre 500 y 800 km prioridad 2, entre 801 y 1000 km prioridad 3, entre 1001 y 1350 km prioridad 4 y para mayores distancias prioridad 5. Cuando una aeronave recibe cierta señal se coloca en la cola que le corresponde y empieza a contar el tiempo de espera. Los despegues se realizan cada 6 minutos según el orden establecido en las distintas colas de prioridad. El piloto de una aeronave puede pasar el aviso a control de que tiene un problema, y no puede despegar por lo que pasa al final de la cola y se da la orden de despegue a la siguiente aeronave. Puede darse la circunstancia de que una aeronave lleve mas de 20 minutos esperando, en ese caso pasará a formar parte de la siguiente cola de prioridad y su tiempo de espera se inicializa a cero.Escribir el algoritmo que simule este sistema de colas mediante una lista única, cada vez que despegue un avión saldrá un mensaje con las características del vuelo y el tiempo total de espera.
Prioridad A, B, C, D, E
Distancia de viaje (Km):
A: Menor de 500B: Entre 500 – 800C: Entre 801 – 1000D: Entre 1001 – 1350E: Mayor de 1350
LLENAR COLAS
FRENT_A ← 0, FRENT_B ← 0, FRENT_C ← 0, FRENT_D ← 0, FRENT_E ← 0
FIN_A ← 0, FIN_B ← 0, FIN_C ← 0,
26 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
FIN_D ← 0, FIN_E ← 0
INICIO
Leer avion (AV), Leer Distancia de destino(DIS)Si DIS > 0 y DIS < 500 Entonces
FIN_A ← FIN_A + 1COLA[FIN_A] ← AV
SinoSi DIS >= 500 y DIS <= 800 Entonces
FIN_B ← FIN_B + 1COLB[FIN_B] ← AV
SinoSi DIS >= 801 y DIS<= 1000 Entonces
FIN_C ← FIN_C + 1 COLC[FIN_C] ← AV
SinoSi DIS >= 1001 y DIS <= 1350 Entonces
FIN_D ← FIN_D + 1COLD[FIN_D] ← AV
SinoFIN_E ← FIN_E + 1COLE[FIN_E] ← AV
Fin_SiFin_Si
Fin_SiFin_Si
FIN
//Atender al Cliente
27 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Tiempo ← 0
INICIO
Si FRENT_A < FIN_A Entonces Mostrar ColaA(FRENT_A + 1) // Avion por Salir
SinoSi FRENT_B < FIN_B Entonces
Mostrar ColaA(FRENT_B + 1)Sino
Si FRENT_C < FIN_C EntoncesMostrar ColaC(FRENT_C + 1)
SinoSi FRENT_D < FIN_D Entonces
Mostrar ColaD(FRENT_D + 1)Sino
Si FRENT_E < FIN_E EntoncesMostrar ColaE(FRENT_E + 1)
Fin_SiFin_Si
Fin_SiFin_Si
Fin_Si
Repetir hasta que tiempo >= 7tiempo ← tiempo + 1
Si tiempo >= 6 Entonces // Cada 6 segundos como EjemploSi FIN_A > 0 Entonces
Si FRENT_A < FIN_A Entonces FRENT_A ← FRENT_A + 1
Cola(FRENT_A) ← vaciotiempo ← 0
Sino FRENT_A ← 0
FIN_A ← 0Fin_Si
Sino Si FIN_B > 0 Entonces
Si FRENT_B < FIN_B Entonces
28 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
FRENT_B ← FRENT_ B + 1 Cola(FRENT_ B) ← vacio
tiempo ← 0Sino FRENT_ B ← 0
FIN_ B ← 0Fin_Si
SinoSi FIN_C > 0 Entonces
Si FRENT_ C < FIN_ C Entonces FRENT_ C ← FRENT_ C + 1
Cola(FRENT_ C) ← vaciotiempo ← 0
Sino FRENT_ C ← 0
FIN_ C ← 0Fin_Si
Sino Si FIN_D > 0 Entonces
Si FRENT_ D < FIN_ C Entonces FRENT_ D ← FRENT_ D + 1
Cola(FRENT_ D) ← vaciotiempo ← 0
Sino FRENT_ D ← 0
FIN_ D ← 0Fin_Si
SinoSi FIN_E > 0 Entonces
Si FRENT_ E < FIN_ C Entonces FRENT_ E ← FRENT_ E + 1
Cola(FRENT_ E) ← vaciotiempo ← 0
Sino FRENT_ E ← 0
FIN_ E ← 0Fin_Si
Fin_Si Fin_SiFin_Si
Fin_Si
29 Ejercicios de Pilas y Colas Estructura de Datos
Universidad Nacional del Santa-Ing. de Sistemas e Informática 2010
Fin_SiFin_Si
Fin_Repetir
Escribir “Cola vacia”FIN
30 Ejercicios de Pilas y Colas Estructura de Datos