PULSOFT

Ejercicio 1

Crea un programa en Java que utilice una PriorityQueue para gestionar números enteros. Realiza las siguientes operaciones: Añadir números: Agrega los números 10, 5, 20, y 15 a la PriorityQueue. Mostrar el número más pequeño: Utiliza el método peek() para imprimir el elemento de mayor prioridad (el menor número en este caso). Eliminar números: Usa el método poll() para eliminar el elemento de mayor prioridad (el menor número) e imprímelo. Mostrar los elementos restantes: Después de cada eliminación, imprime los elementos que quedan en la PriorityQueue.

Ejercicio 2

Crea un programa en Java que utilice una PriorityQueue para gestionar tareas pendientes en un sistema. Cada tarea tiene un nombre (String) y una prioridad (entero). Realiza las siguientes operaciones: Añade las siguientes tareas a la PriorityQueue: "Enviar informe" con prioridad 2. "Revisar correos" con prioridad 5. "Preparar presentación" con prioridad 1. "Llamar a cliente" con prioridad 3. Muestra la tarea con mayor prioridad (menor número) utilizando el método peek(). Elimina y muestra las tareas en orden de prioridad usando el método poll(), imprimiendo su nombre y prioridad. Una vez completadas todas las tareas, imprime un mensaje indicando que no hay más tareas pendientes.

Ejercicio 3

Crea un programa en Java que gestione una lista de pacientes en un hospital utilizando una PriorityQueue. Cada paciente tiene un nombre (String) y un nivel de urgencia (entero, donde 1 es el más urgente). Realiza las siguientes operaciones: Agrega los siguientes pacientes a la PriorityQueue: "Juan Pérez" con nivel de urgencia 3. "María López" con nivel de urgencia 1. "Carlos Gómez" con nivel de urgencia 4. "Ana Torres" con nivel de urgencia 2. Muestra el paciente con mayor urgencia utilizando el método peek(). Atiende a los pacientes en orden de urgencia utilizando el método poll(). Por cada paciente atendido, imprime su nombre y nivel de urgencia. Permite al usuario agregar nuevos pacientes manualmente, ingresando su nombre y nivel de urgencia desde la consola. Pregunta si desea agregar más pacientes hasta que el usuario indique que no. Al final, si no hay más pacientes pendientes, muestra un mensaje indicando que "No quedan pacientes en espera".

Ejercicio 4

Crea un programa en Java que gestione las tareas de un equipo de soporte técnico utilizando una PriorityQueue. Cada tarea tendrá una descripción (String), un nivel de prioridad (entero, donde 1 es el más urgente), y una fecha de creación (LocalDate). El programa debe realizar las siguientes operaciones: Agregar tareas predefinidas a la PriorityQueue, por ejemplo: "Revisar servidor" con prioridad 2, creado el 1 de diciembre de 2024. "Actualizar sistema operativo" con prioridad 3, creado el 5 de diciembre de 2024. "Atender fallo crítico en red" con prioridad 1, creado el 10 de diciembre de 2024. "Respaldo de base de datos" con prioridad 4, creado el 8 de diciembre de 2024. Mostrar la tarea más urgente sin eliminarla usando el método peek(). Procesar y resolver las tareas en orden de prioridad utilizando el método poll(). Por cada tarea resuelta, muestra su descripción, nivel de prioridad y fecha de creación. Permitir al usuario agregar nuevas tareas manualmente, ingresando la descripción, el nivel de prioridad y la fecha de creación. Pregunta si desea agregar más tareas hasta que el usuario indique que no. Listar las tareas pendientes en la cola al final del programa, mostrando la descripción, nivel de prioridad y fecha de creación para cada tarea. Si no hay tareas pendientes, muestra un mensaje indicando que "No hay tareas pendientes".

Ejercicio 5

Gestión de Inscripciones para un Torneo de Ajedrez Crea un programa en Java que gestione las inscripciones para un torneo de ajedrez utilizando una PriorityQueue. Cada inscripción debe incluir los siguientes datos: Nombre del jugador (String) Categoría (entero, donde 1 es la categoría de mayor nivel y 5 la más baja) Hora de inscripción (LocalTime) El programa debe realizar las siguientes operaciones: Cargar inscripciones iniciales: Agregar inscripciones predefinidas con nombres, categorías y horas de inscripción. Por ejemplo: "Carlos López", categoría 2, hora de inscripción 10:30. "Ana García", categoría 1, hora de inscripción 9:45. "Luis Fernández", categoría 3, hora de inscripción 11:15. "Sofía Torres", categoría 2, hora de inscripción 10:00. Mostrar la próxima inscripción a procesar: Usar el método peek() para mostrar el jugador con la mayor prioridad (menor categoría) y, en caso de empate, el jugador inscrito más temprano. Procesar las inscripciones: Utilizar el método poll() para procesar las inscripciones en orden de prioridad, mostrando el nombre del jugador, su categoría y la hora de inscripción. Las inscripciones de categoría más alta (número menor) deben ser procesadas primero; en caso de empate en categoría, se priorizan las inscripciones realizadas más temprano. Permitir nuevas inscripciones: El usuario podrá agregar manualmente más inscripciones ingresando nombre, categoría y hora de inscripción. Repite este proceso hasta que el usuario indique que no desea agregar más inscripciones. Mostrar el estado de las inscripciones pendientes: Si hay jugadores pendientes de ser procesados, mostrar un listado con el nombre, la categoría y la hora de inscripción de cada uno. Si no quedan inscripciones pendientes, mostrar el mensaje "No hay inscripciones pendientes". Notas adicionales: Define una clase Inscripcion que implemente Comparable para gestionar las prioridades según las reglas establecidas. Usa la clase LocalTime para representar la hora de inscripción. Asegúrate de que la prioridad de procesamiento cumpla con los criterios indicados (categoría primero, luego hora de inscripción).