Está en la página 1de 1

Ingeniera Informtica - Algoritmos y Estructura de datos III - Ao 2013 2do semestre

TAREA #2 (Conceptos, Definicin de TAD y Lenguaje C ) Entregar va Educa hasta el 9/AGO/2013 23:55 hs. Tarea grupal Se entrega en un solo archivo comprimido (zip o rar). Cada ejercicio en un subdirectorio separado. Se entrega solo los fuentes (.sl, .c y .h). Los documentos en formato Portable Document Format (PDF) (para el ejercicio 1). 1. Busque definicin de los siguientes trminos, indicando la fuente que consult (solo libros, NO INTERNET). Las definiciones deben ser cortas y precisas. Dos lneas por definicin (8p) a) Algoritmo y propiedades b) Lenguaje de programacin c) Modelo matemtico d) Tipo abstracto de dato e) Forma cerrada de una solucin (closed-form solution) f) Estructura de datos g) Lista desde el punto de vista Matemtico y desde el punto de vista Computacional h) rbol desde el punto de vista Matemtico y desde el punto de vista Computacional Para referenciar el libro indique: Nombre de autor/es, Titulo del libro, Edicin, Editorial y Ao. Por ejemplo:
T. Cormen, C. Leiserson, R. Rivest y C. Stein. Introduction to algorithms. Second edition. MIT Press. 2001.

Autores 2.

Ttulo

Edicin

Editorial

Ao

Construya prototipos para los siguientes TAD indicando la forma de implementacin. Para este ejercicio indique la forma en que el dato ser almacenado internamente e implemente la operacin indicada (10p)

Enteros Grandes de 256 bits de capacidad. Implementar la operacin de Suma y Multiplicacin . Conjunto (SET) de Cadenas. Implementar las operaciones: Asignar,Union, Diferencia.

Utilice C para la implementacin. Si utiliza funciones preincorporadas del lenguaje, solo use las que son estandard. Incluya varias pruebas de su implementacin (comentadas adecuadamente) en la funcin main. Si necesita algn dato del usuario, este debe ser provedo por la linea de comandos y NO por la entrada estndar. En su cdigo indique la forma de compilar su programa y verificar su implementacin. Incluir los comentarios en el propio cdigo fuente. 3. Resolver el siguiente problema en lenguaje C (10p) (Entregar solo los fuentes, incluir los comentarios en el propio fuente). Se tiene que determinar el orden de ejecucin de N tareas que se encuentran numeradas del 1 a N en un servidor. Alguna de las tareas deben completarse antes que otras empiecen. Escribir un programa que lea desde un archivo el nmero N seguido de una secuencia de pares de trabajo (i,j) que indica que la tarea i debe ejercutarse antes que la tarea j. Un ejemplo del archivo es el siguiente: 10 1 2 2 3 3 5 2 4 4 5 5 8 6 4 7 8 4 7 8 9 Debe validar que la entrada de datos no contenga una ejecucin imposible de tareas, esto es, un ciclo. Por ejemplo si colocamos la secuencia (3,2) en ejemplo se introducira un ciclo y no existira una solucin. Tenga en cuenta si una tarea no se encuentra en el par i, j entonces indica que la misma es una tarea libre la que puede hacerse en cualquier orden. En el ejemplo la tarea 10 es una tarea libre. Imprimir en forma separada las tareas libres. Ntese que puede tenerse ms de una solucin (puede imprimir cualquiera). Un ejemplo de solucin para el ejemplo sera: 1 2 3 6 4 5 7 8 9 Libre: 10 Observaciones: Su programa debe se hecho en C estandard (debe poder compilarse en Linux, Windows, MacOS, etc) Se corregir el adecuado uso del lenguaje y de estilo de programacin (recordar lo que se coment en la 1ra clase). Se tendr en cuanta el correcto uso de las estructura de datos y de la aplicacin de los conceptos de TAD. Haga uso de TAD convencionales que usted ya conoce: Arreglos, Pilas, Listas o Colas. Los comentarios deben incluir la estrategia de solucin que usted sigui. NO comente lo obvio!!