Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Profesor:
Objetivos
Implementar en C los TAD Pila, Cola y Cola de Prioridad para la resolucin de un problema.
Introduccin
En el polo norte, se encuentra la fbrica de regalos del viejito pascuero, en ella trabajan muchos duendes organizando y clasificando los regalos para que todo salga bien en la prxima navidad. Antiguamente, la seleccin y clasificacin de los regalos se haca de forma manual, pero ahora poseen un moderno sistema de cintas transportadoras que son operadas por los duendes. El sistema actual consiste de dos cintas transportadoras (colas), una de juguetes y la otra de paquetes. El sistema envuelve cada tipo de regalo con un color de paquete diferente. Actualmente se tienen 3 tipos de regalos muy populares que sern los que se van a distribuir. Adems para los nios que se han portado mal y no han hecho correctamente sus tareas, se les ha destinado un pedazo de carbn. Las muecas deben envolverse en paquetes de color rojo, las pelotas deben envolverse en paquetes de color azul y las tablets en paquetes de color verde. Los pedazos de carbn pueden envolverse con cualquier color.
Tarea 2: Salvando la Navidad (TAD Pila, Cola y Cola de Prioridad) Estructura de Datos, Segundo Semestre 2011
Luego de tener los regalos envueltos, estos pasan por una cinta transportadora central (cola de prioridad) por la que circulan los paquetes ya envueltos. Estos paquetes poseen un cdigo QR el cual indica su contenido. Ahora los paquetes deben ser verificados por uno o ms duendes, el cual verifica que el color del paquete corresponda con el juguete que se encuentra dentro de l. La prioridad de verificacin es primero los paquetes rojos, luego los azules y por ltimo los verdes. Si el regalo est correctamente envuelto pasa a una de las cinco cintas transportadoras correspondientes a los cinco continentes y luego a sacos (pilas) para su posterior distribucin. Si el regalo no est correctamente envuelto es llevado a uno de los 3 sacos de error y posteriormente se vuelven a encolar el paquete y el juguete en su respectiva cinta transportadora. Si el paquete errneamente envuelto es azul pasa al saco azul, si el paquete errneamente envuelto es verde pasa al saco verde y si el paquete errneamente envuelto es rojo pasa al saco rojo. El sistema de seleccin, empaquetado y clasificacin se muestra en la siguiente figura:
En la fbrica trabajan 6 duendes realizando las tareas de verificacin de regalos y faltando solo cinco das para navidad el duende ms conflictivo de todos, el duende Nachito, decide renunciar porque no est contento con su labor. Sin embargo antes de retirarse empuja accidentalmente a 4 de sus compaeros por el ducto de ventilacin, quedando estos envueltos en algunos paquetes, poniendo en peligro la Navidad.
Pgina 2 de 6
Tarea 2: Salvando la Navidad (TAD Pila, Cola y Cola de Prioridad) Estructura de Datos, Segundo Semestre 2011
Tareas a Realizar
1. Se deben programar en C (en Linux, se compilar en los computadores del LDS con S.O. Fedora 16) las principales funciones para los TAD Pila, Cola y Cola de Prioridad (como mnimo para pilas: apilar, desapilar, esVacio; como mnimo para colas: encolar, desencolar, esVacio). 2. Se debern usar las funciones programadas en el punto anterior para simular la fbrica en donde trabajan los duendes. El programa deber recibir un archivo llamado Entrada.txt con el Nombre, Continente y Regalo de cada nio que ser visitado esta navidad. El formato del archivo Entrada.txt es el siguiente: Juanito Perez America Carbon Akira Tanaka Asia Tablet Pepe Gonzalez America Tablet Cada 3 lneas aparece un nio con su respectivo nombre, continente y regalo. El programa deber leer el archivo Entrada.txt y cargar su contenido en la cola de juguetes. Adems deber contabilizar cuantos paquetes de cada color se necesitarn para envolver los regalos. La cola de paquetes vacos deber ser llenada aleatoriamente con la cantidad exacta de paquetes segn los contadores obtenidos. Adems, se deben incluir aleatoriamente en la cola de juguetes los 4 duendes que cayeron por el ducto de ventilacin. 3. Una vez que se tengan las colas de juguetes y regalos llenas segn el punto anterior, se desencolarn uno a uno los elementos de ambas colas y se proceder a envolver los regalos con un elemento de cada cola. Por ejemplo, si de la cola de juguetes sale un duende, y de la cola de paquetes sale un paquete rojo, el resultado ser un duende envuelto en un paquete rojo. Cada vez que un paquete sea envuelto deber ser enviado a la cinta transportadora central (cola de prioridad). Este proceso deber repetirse hasta que se acaben los paquetes vacos (recordar que hay 4 elementos de ms en la cola de juguetes).
Pgina 3 de 6
Tarea 2: Salvando la Navidad (TAD Pila, Cola y Cola de Prioridad) Estructura de Datos, Segundo Semestre 2011
4. Una vez que se haya terminado con el proceso anterior, se deber procesar la cinta transportadora central (cola de prioridad) teniendo en cuenta que la prioridad de verificacin es paquetes rojos por sobre paquetes azules y paquetes azules por sobre paquetes verdes. Para la verificacin se cuenta inicialmente con un solo duende (eran seis al principio, pero Nachito renunci y empuj a otros cuatro duendes a la mquina empaquetadora). La tarea de este duende es leer el cdigo del paquete para investigar su contenido: a) Si el contenido del regalo corresponde con el color del paquete, deber llevar el regalo a una de las siguientes cintas segn el continente de destino. b) Si el contenido del regalo no corresponde con el color del paquete, deber apilarlo en uno de los sacos destinados para errores de envoltura. c) Si el contenido del regalo es un duende, deber liberarlo inmediatamente para que lo ayude a trabajar y el paquete deber ser reencolado en la cinta transportadora de paquetes vacos. Los tiempos promedio de verificacin segn cantidad de duendes que se encuentren trabajando son Cantidad de Duendes 1 2 3 4 5 Tiempo 10 segundos en verificar 1 regalo 10 segundos en verificar 2 regalos 10 segundos en verificar 3 regalos 10 segundos en verificar 4 regalos 10 segundos en verificar 5 regalos
5. Cuando se acaben los regalos de la cinta transportadora central, se debern reencolar los paquetes errneamente envueltos en las cintas transportadoras de juguetes y paquetes vacos separando el contenido de la envoltura. Luego se deber repetir desde el punto 3 en adelante. 6. Cuando se terminen de clasificar todos los regalos por continente (esto significa que todos los juguetes han sido envueltos adecuadamente y adems que los cinco duendes fueron liberados de su prisin de papel de regalo) se deber dar inicio al procesamiento de las cintas transportadoras continentales, las cuales debern apilar los regalos en las bolsas para prepararlas para su distribucin por todo el mundo.
Pgina 4 de 6
Tarea 2: Salvando la Navidad (TAD Pila, Cola y Cola de Prioridad) Estructura de Datos, Segundo Semestre 2011
7. Finalmente, el programa deber generar 6 archivos. El archivo Registro.txt con la informacin de la verificacin de los regalos. Se deber indicar cada verificacin y su situacin final y adems debe contener el tiempo total que demor el proceso de empaque en minutos y segundos. El formato del archivo Registro.txt es el siguiente: Duendes trabajando: 1 Tiempo: 0 segundos. Verificando regalo Mueca en Verificando regalo Duende en Duendes trabajando: 2 Tiempo: 20 segundos. Verificando regalo Carbon en Operacion terminada! Tiempo empleado: 20 minutos y
50 segundos.
Adems se debern generar 5 archivos correspondientes a los 5 sacos de los distintos continentes con los nombres de los nios que sern visitados. Los archivos debern llamarse America.txt, Europa.txt, Asia.txt, Africa.txt y Oceania.txt. El formato de los archivos es el siguiente (ejemplo America.txt): AMERICA Juanito Perez Pepe Gonzalez Para el resto de los archivos solo cambia el titulo. Los nombres deben obtenerse desapilando el contenido de los sacos.
Pgina 5 de 6
Tarea 2: Salvando la Navidad (TAD Pila, Cola y Cola de Prioridad) Estructura de Datos, Segundo Semestre 2011
Entrega
La tarea debe entregarse va correo electrnico al mail del ayudante alex.arenasf@alumnos.usm.cl con el asunto [EDD] Tarea 2 Grupo X (sin las comillas y reemplazando X por su nmero de grupo). La tarea debe enviarse comprimida en un archivo TAR.GZ llamado GrupoX.tar.gz (reemplazando X por su nmero de grupo) que debe contener: El archivo compilable. (tarea2.c) Nombre, ROL y que program cada alumno. (nombres.txt) Indicaciones de compilacin de ser necesarias. (README.txt) Archivo de entrada inventado por los integrantes del grupo con al menos veinte nios con su respectivo continente y regalo. (Entrada.txt)
El plazo mximo para la entrega de esta tarea es el da mircoles 4 de enero de 2012 hasta las 23:59:59 hrs. Se descontarn 30 puntos por cada da de retraso o fraccin.
Restricciones y Consideraciones
Las tareas deben compilar en los computadores que se encuentran en el LDS (Fedora 16). Si la tarea no compila, no ser revisada. La tarea ser compilada con el comando gcc Wall tarea2.c o salida Por cada Warning en la compilacin se descontarn 5 puntos. La tarea debe funcionar al menos con el archivo Entrada.txt proporcionado por cada grupo. Se debe respetar la integridad de los TAD Pila, Cola y Cola de prioridad, accesos inmediatos a las estructuras se considerar como una violacin grave del TAD y ser evaluado con nota cero. Se deben respetar al pie de la letra los formatos de los archivos Entrada.txt, Registro.txt, America.txt, Europa.txt, Asia.txt, Africa.txt y Oceania.txt y formatos de entrega especificados en este enunciado. La tarea debe enviarse desde un correo electrnico institucional, @alumnos.usm.cl o @alumnos.inf.utfsm.cl. Si se detecta Copia, la tarea ser evaluada con nota cero. Tareas que no cumplan con alguna de estas restricciones arriesgan descuentos e incluso la no revisin. Pgina 6 de 6