Vous êtes sur la page 1sur 3

Estructuras de Datos

Estructuras Lineales

Actividad a realizar
Utilizando las estructuras de datos lineales, construidas en clase:

 Nodo Simple
 Nodo Doble
 Arreglo
 Pila
 Cola
 Lista

Resolver en equipos de máximo tres integrantes, los problemas propuestos a través de la


implementación de una solución para el problema.

Problemas
Sorteo de Premios (30%)
Desarrolle un programa que permita simular un sorteo de premios, suponiendo que se tiene
la siguiente información:

 Una lista de n nombres de participantes en el sorteo,


 Una lista de m premios (donde m <= n).

Se tienen las siguientes restricciones de funcionamiento:

 Los premios se sortean según el orden en que se dieron de alta en la lista, mientras
que el ganador se elige aleatoriamente de la lista de participantes.
 El participante ganador de un premio, se elimina de la lista, al igual que el premio.
 Se deben seleccionar ganadores, mientras haya premios.
 Se deberá indicar la cantidad de participantes que hayan quedado sin premio, si es el
caso.

Consejo: Se sugiere modificar la estructura Nodo y/o Nodo Doble (según sea el caso), para
almacenar String, en lugar de Int, o en su defecto, crear un nodo en particular para el
problema.

Evaluador de Equilibrio de Contención (30%)


Una secuencia de caracteres con paréntesis equilibrados es aquella en la que cada paréntesis
de apertura tiene otro de cierre, y los caracteres entre ambos, son también una secuencia
con paréntesis equilibrados.

Desarrolle un algoritmo que sea capaz de determinar si una secuencia está equilibrada o no.
Los paréntesis considerados son:

 Paréntesis: ()
 Corchetes cuadrados: []
 Llaves: {}
 Corchetes angulares: <>

Se tienen las siguientes restricciones de funcionamiento:

 Se permite el anidamiento [{<>}], pero no el solapamiento (<[)]>.


 El resto de caracteres en la secuencia (números y/o letras) se ignoran.
 En caso de que exista un error en el equilibrio, se debe indicar con un mensaje
explicativo en pantalla.

Consejo: Se sugiere modificar la estructura Nodo y/o Nodo Doble (según sea el caso), para
almacenar Char, en lugar de Int, o en su defecto, crear un nodo en particular para el
problema.

El verdugo generoso (40%)


Un verdugo debe exterminar a n prisioneros de guerra. El exterminio lo ejecuta de la
siguiente manera:

1. Los prisioneros forman un círculo alrededor del verdugo,


2. El verdugo elige a quien fusilar primero,
3. Una vez muerto el primero, el verdugo cuenta, a partir del lugar donde estaba su
ultima victima, k prisioneros en orden de las manecillas del reloj,
4. Y luego fusila al k-ésimo prisionero después de su última víctima (a los muertos no
los cuenta), y repite este proceso hasta que solo quede un prisionero.
5. El último prisionero podrá ser liberado.

El verdugo tiene un amigo entre los n prisioneros, desarrolle un programa que dados n, k y
la ubicación de su amigo, se le indique a quien fusilar primero, para asegurar que su amigo
sea el que quede libre.

Se tienen las siguientes restricciones de funcionamiento:

 El valor de n, deberá ser de al menos 3.


 El valor de k, deberá ser menor a n.
 La ubicación del amigo deberá indicarse como un número entero al inicio de la
ejecución.
Consejo: Modificar la estructura Nodo y/o Nodo Doble (según sea el caso), para almacenar
un estatus “Muerto” como Boolean, además del valor en Int, o en su defecto, crear un nodo
en particular para el problema.

Entrega y revisión
Se deberá entregar en plataforma un empaquetado ZIP, con los códigos fuente de los
proyectos resueltos, realizados en el lenguaje de programación Java.

Si el empaquetado excede la cantidad límite soportada por Moodle, se deberá subir a su


carpeta de Google Drive institucional, y compartir el enlace.

Vous aimerez peut-être aussi