Sunteți pe pagina 1din 2

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ

FACULTAD DE CIENCIAS E INGENIERÍA

ALGORITMIA
Segundo Examen
(Segundo Semestre 2018)

Duración: 3 horas

Nota:

 No está permitido el uso de material de consulta.


 Debe utilizar comentarios para explicar la lógica seguida en los programas elaborados,
así como nombres de variables apropiados.
 El orden será parte de la evaluación.
 Su trabajo deberá ser subido a PAIDEIA en el espacio indicado por los jefes de práctica.

Puntaje total: 20 puntos.

Parte Obligatoria

Pregunta 1 (7 puntos)

Una secuencia de números enteros se llama biotónica si los números primero aumentan y luego decrecen.
Por ejemplo la secuencia de números {2, 5, 7, 12, 10, 6, 4, 1} es una secuencia biotónica (note cómo la
secuencia empieza en 2, aumenta hasta 12 y luego decrece hasta 1). Note también que, por definición,
una secuencia que sólo crece o sólo decrece también es una secuencia biotónica.

Implemente en C un programa que haga lo siguiente:

 Representar una secuencia biotónica con una lista doblemente enlazada. En esta parte
implementar las estructuras y funciones de manejo principales de la lista doblemente enlazada.
(2 puntos).
 Ordenar la secuencia biotónica (representada como una lista doblemente enlazada) en un
tiempo de complejidad O(n), donde n es el número de elementos de la secuencia. (5 puntos).

El programa debe mostrar como resultado la secuencia ordenada.

Pregunta 2 (6 puntos)

Un banco desea implementar una cola con prioridad para la asignación de turnos a sus usuarios, por tal
motivo clasifica a sus usuarios en tres tipos: No clientes, Clientes normales y clientes Vip. La cola a
implementar debe brindar prioridad en atención a los clientes Vip, luego a los Clientes normales y
finalmente a los No clientes. Este proceso de atención tiene una sola excepción: un Cliente normal solo
puede esperar a que prioricen a 3 clientes Vip antes que a él desde su registro en el banco, por tal motivo
si llega un cuarto cliente Vip, su turno será posterior al cliente Normal en espera.

 Representar la estructura necesaria para la cola mencionada (0.5 puntos).


 Implementar la cola priorizada y las funciones necesarias para el llenado de la misma. Solo debe
utilizar una cola en el desarrollo, no es válido el uso de memoria auxiliar (3.5 puntos).

INF263 Algoritmia Examen Final (2018-2)


 Implementar una función que indique el turno a ser atendido, de acuerdo a la cola desarrollada
(2 puntos).

Parte Electiva (Seleccione solo una de las siguientes preguntas)

Pregunta 3 (7 puntos)

Una secuencia de paréntesis se llama regular si los paréntesis están balanceados (es decir los símbolos de
apertura corresponden bien con los símbolos de cierre). Por ejemplo, las secuencias “( ( ) ) ( )” y “( )” son
regulares, mientras que las secuencias “) (” y “( ( )” no son regulares.

Implementar un programa en C (que utilice el TAD Pila) dada una cadena de caracteres que sólo contienen
los caracteres “(” y “)”, calcule el tamaño de la secuencia regular más larga, así como el número de
secuencias regulares que hay en la cadena de entrada. Si la cadena de entrada no contiene ninguna
secuencia regular, imprimir como resultado “0 0”.

Ejemplos

Entrada Salida
)((())))(()()) 6 2

))( 0 0

Nota: Otros ejemplos de entradas y salidas esperadas son proporcionadas en el archivo pilas_ejemplos.txt
en PAIDEIA.

Pregunta 4 (7 puntos)

La facultad de ingeniería desea realizar el proceso de asignación de docentes a un aula de clases específica
para toda la semana, por tal motivo se debe implementar un árbol binario que permita realizar esta tarea
y evitar cruces de horarios para finalmente imprimir la estructura en orden.

 Implementar la estructura necesaria para almacenar los datos mencionados. No es necesario


guardar el aula (0.5 puntos).
 Desarrollar las funciones necesarias para implementar el árbol binario (1.5 puntos).
 Desarrollar una función iterativa que permita la impresión de los horarios ocupados en pre-
orden. (4 puntos).
 Desarrollar una función recursiva que permita la impresión de los horarios ocupados en orden.
(1 punto).

Ejemplo de impresión en orden (ascendente en base a fecha y hora):

Docente Día Hora Inicial Hora Final


Guanira Lunes 10:00 12:00
Cueva Lunes 12:00 15:00
Sipiran Martes 10:00 13:00
Aguilera Miércoles 15:00 18:00

Profesores del curso: Rony Cueva

Ivan Sipiran

Pando, 15 de diciembre del 2018

INF263 Algoritmia Examen Final (2018-2)

S-ar putea să vă placă și