Beruflich Dokumente
Kultur Dokumente
de Sistemas e Informtica
2010
Estructura de Datos
2010
1.- Codificar el algoritmo de una expresin infija a expresin postfija en la herramienta de programacin 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]); Meter('('); System.out.println("");
Estructura de Datos
2010
Estructura de Datos
2010
Estructura de Datos
2010
Estructura de Datos
2010
2.-codificar el algoritmo de evaluacin de expresin postfija en la herramienta de programacin 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]; 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;
Estructura de Datos
2010
Estructura de Datos
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 parntesis , llave o corchete abierto existe un carcter 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 contrario Examinar s de izquierda a derecha Si se encuentra caracter de apertura entonces Meter en pila; esBalanceado falso; Fin_si Si se encuentra carcter de cerradura entonces Si carcter es de la misma precedencia que el valor del tope de la pila entonces Sacar de pila ltimo dato; esBalanceado verdadero; Caso contrario esBalanceado falso; Fin_si Fin_si Fin_si Imprimir (s+ es balanceado: esBalanceado); FIN
Estructura de Datos
2010
6.- Se tiene la siguiente formula Escribir 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-/+
Estructura de Datos
2010
7. Se tiene una pila con los 10 nmeros naturales, y una cola con los 10 siguientes, escriba el algoritmo en pseudocdigo que utilizando las operaciones bsicas 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.
PILA
1 11 2 12 3 13 4 14 5 15 6 16 7 17 8 18 9 19 10 20 10 10 9 9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 ndice Dato
Sumatoria = 0 N =10
Mientras (Frente = N) y (Tope > 0) hacer Si (Frente = 0) y (Tope = 0) entonces Escribir Pila Vaca Caso Contrario Sumatoria = Sumatoria + Pila [Tope] * Cola [Frente] Si (Frente = Final) entonces Frente = 0 Final = 0 Tope = 0 Caso Contrario Frente = Frente + 1 Tope = Tope 1 Fin _ Si Fin _ Si Fin _ Mientras Escribir La sumatoria es: + Sumatoria FIN
Estructura de Datos
2010
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 parntesis , llave o corchete abierto existe un carcter 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 contrario Examinar s de izquierda a derecha Si se encuentra caracter de apertura entonces Meter en pila; esBalanceado falso; Fin_si Si se encuentra carcter de cerradura entonces Si carcter es de la misma precedencia que el valor del tope de la pila entonces Sacar de pila ltimo dato; esBalanceado verdadero; Caso contrario esBalanceado falso; Fin_si Fin_si Fin_si Imprimir (s+ es balanceado: esBalanceado); FIN
Estructura de Datos
2010
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 posicin n 10, si hay ms de 10 personas, o al final de la misma, en caso contrario. Se pide disear 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 cliente Si final = n entonces Escribir Cola llena Caso contrario final final + 1 cola[final] cliente ptr final frente + 1 si frente = 0 entonces frente 1 ptr final fin si fin si FIN //Procedimiento de Atencin INICIO si No puede ser atendido entonces Llamar al Procedimiento Reingreso caso contrario si frente = 0 entonces escribir cola vacia caso contrario cliente cola[frente] si frente = final entonces frente 0 , final caso contrario frente frente + 1 fin-si
Estructura de Datos
2010
//Procedimiento reingreso INICIO tope 0 si final <= 10entonces final final + 1 cola [final] cola[frente] caso contrario repetir desde j= ptr hasta 10 tope tope + 1 pila[tope] cola[j] fin_repetir cola[10] cola [frente] p tope repetir desde k=1 hasta tope cola[10+k] pila[p] p tope-1 fin_repetir fin_si repetir desde i=1 hasta n-1 cola[i] cola[i+1] fin_repetir frente 1 final final 1 FIN
Estructura de Datos
2010
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 estn dentro del ascensor (peticiones internas) y las de lo estn fuera (peticiones externas). Estas ltimas solo sern 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 segn 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 segn 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 simulacin. La visualizacin del proceso se puede realizar utilizando un mtodo MOVER _ ASCENSOR que muestra por pantalla el movimiento del ascensor. Este mtodo responde al siguiente perfil: MOVER _ ASCENSOR (desde, hasta: 0N); donde desde indica la posicin actual del ascensor y hasta, el piso al que debe ir.
INICIO leer pet si pet = n + 1 entonces finaliza simulacin caso contrario si pet es interna entonces frente i 0, final i 0 leer x si final i = n entonces escribir cola llena : no hay lugares para peticiones internas caso contrario final i final i + 1 cola[final] x fin_si si frente i = 0 entonces frente i 1 fin_si llamar a procedimiento cumplir_orden i caso contarrio frente e 0,final e 0 leer x
Estructura de Datos
2010
// Procedimento cumplir_orden i INICIO Piso_actual 0 Repetir Piso_destino cola[frente i] Hasta que (frente i = 0) Repetir Si frente i = final i entonces Frente i 0 Final i 0 Caso contrario Frente i frente i + 1 Fin_si Piso_actual piso_destino Hasta piso_destino FIN
Estructura de Datos
2010
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. 2. 3. 4. 5. 6. 7. 8. Mientras haya mas caracteres en palabra hacer apilar el primero de la cola en la pila P sacar de la cola Fin_Mientras Mientras la pila P no sea vacia hacer Escribir la cima de P Desafilar de P Fin_mientras
1 2 3 N
3 2 1 N
....
Estructura de Datos
2010
//Algoritmo para meter los caracteres Si Frente = -1 entonces Escribir Cola vaca Frente =1 Final =1 Cola [Frente]=carac Sino Si Final = N entonces Escribir Cola llena Sino Final = Final +1 Fin_Si Fin_Si // Algoritmo para Sacar un caracter de Cola y ponerlo en Pila Mientras Frente <= Final hacer Pila [Tope] = Cola [Frente] Frente = Frente +1 Tope = Tope +1 Fin_Mientras //Algoritmo para Sacar de Pila un caracter y mostrarlo Mientras tope <> 0 hacer Escribir Pila[Tope] Tope = Tope 1 Si Tope = 0 entonces Tope = -1 Frente = -1 Final = -1 Fin_Si Fin_Mientras FIN
Estructura de Datos
2010
Tope Pila[Tope] 6 n 5 e 4 m 3 a 2 x 1 e 0
La salida es:
nemaxe
Estructura de Datos
2010
4. Escribe el algoritmo en pseudocdigo que lea una cadena de caracteres del teclado y decida si es palndromo, es decir, si se lee igual de izquierda a derecha que de derecha a izquierda. Implemntalo despus en el Lenguaje de programacin de su dominio. Ejemplo: daba le arroz a la zorra en el abad es palndromo. INICIO N Cantidad de caracteres i 1, j N , Band 1 Hacer Mientras (i < j y Band = 1) Si caracter(i) <> caracter(j) entonces Band 0 Fin_Si Ii+1 Jj+1 Fin_Mientras Si Band = 1 entonces Escribir Es Palndromo Sino Escribir No es Palndromo Fin_Si FIN
5. Un estacionamiento de las avionetas de un aerdromo es en lnea, 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 dems se mueven hacia delante, de tal forma que lo espacios libres del estacionamiento estn por la parte izquierda. Escribia el algoritmo (Pseudocdigo) para emular este estacionamiento tiene como entrada un carcter que indica una accin sobre la avioneta, y la matricula de la avioneta. La accin 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
Estructura de Datos
2010
INICIO Ingrese POSICION de la Avion Si FINAL <= 0 Entonces Escribir No hay Aviones para salir Sino Si POSICION = 1 Entonces Si FINAL = 1 Entonces COLA[POSICION] Vacio FINAL FINAL -1 Sino COLA[POSICION] Vacio ARREGLARPOSICION /* Procedimiento FINAL FINAL -1 Fin_Si Sino SACAR /* Procedimiento COLA[POSICION] Vacio LLENAR /* Procedimiento FINAL FINAL 1 Fin_Si Fin_Si FIN // Fin de salida de Aviones
Estructura de Datos
2010
Estructura de Datos
2010
6. Elabore el pseudocdigo de las operaciones METER Y SACAR de una bicola, donde la cola de un extremo guarda cdigos de Radios y la del otro extremo cdigos de televisores. //Algoritmo Insertar FinalD 0 Finall 1 INICIO: Verificar Opcion: Leer x //Dato Si Opcion = Derecha entonces Si FinalD >= N entonces Escribir Cola llena Sino FinalD FinalD + 1 Cola(FinalD) x Fin_Si Si FinalD > 0 y Finall <= 0 entonces Escribir No se puede insertar Sino Si FinalD <= 0 entonces Cola(1) x FinalD 1 Sino Si Finall > 1 entonces Finall Finall -1 Cola(Finall) x Sino Escribir No se puede insertar Fin_Si Fin_Si Fin_Si Fin_Si FIN
Estructura de Datos
2010
7. En un archivo de texto se encuentran los resultados de una competicin de tiro al plato, de tal forma que en cada lnea se encuentra Apellido, Nombre, nmero de dorsal y nmero de platos rotos. Se debe escribir el algoritmo (Pseudocdigo), que lea el archivo de la competicin y determine los tres primeros. La salida ha de ser los tres ganadores y a continuacin 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 Fin1 Fin1 + 1 Fin2 Fin2 + 1 Fin3 Fin3 + 1 Fin4 Fin4 + 1
Estructura de Datos
2010
Estructura de Datos
2010
8. El despegue de aeronaves en un aeropuerto se realiza siguiendo el orden establecido por una cola de prioridades. Hay 5 prioridades establecidas segn el destino de aeronave. Destino de menos de 500 km tienen la mxima 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 seal se coloca en la cola que le corresponde y empieza a contar el tiempo de espera. Los despegues se realizan cada 6 minutos segn 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 avin saldr un mensaje con las caractersticas del vuelo y el tiempo total de espera.
Prioridad A, B, C, D, E Distancia de viaje (Km): A: Menor de 500 B: Entre 500 800 C: Entre 801 1000 D: Entre 1001 1350 E: 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, FIN_D 0, FIN_E 0
Estructura de Datos
2010
//Atender al Cliente Tiempo 0 INICIO Si FRENT_A < FIN_A Entonces Mostrar ColaA(FRENT_A + 1) // Avion por Salir Sino Si FRENT_B < FIN_B Entonces Mostrar ColaA(FRENT_B + 1) Sino
Estructura de Datos
2010
Estructura de Datos
2010
Estructura de Datos