INSTITUTO TECNOLÓGICO DE COSTA RICA Escuela de Computación Análisis y Diseño de Algoritmos I Semestre 2014 Prof. Víctor Garro Tarea Corta # 4 Punteros Objetivos. 1. Introducir los punteros en el lenguaje C++ 2. Analizar como los punteros nos permiten utilizar memoria dinámica 3. Comprender el funcionamiento de los punteros y su manejo. Teóricos(10%) 1. Explique una ventaja de la memoria dinámica sobre la estatica. 2. Ejemplifique como se declara un puntero. 3. Explique cómo funcionan los punteros en la memoria dinámica. 4. Como hace un programador para que un puntero no este asociado a ninguna dirección? Práctica Laboratorio(90%) 1) Realice un programa que genere 5 punteros (2 int, 2 char, 1 struct me), posteriormente llénelos con variables, y al final genere un arreglo que contenga la dirección de memoria donde esta el puntero, y la dirección de memoria del contenido (*Por medio del puntero). Para constatar los resultados, muestre la información como se muestra a continuación (30%) 2) Desarrolle una estructura con punteros a otras estructuras y cree con estas un historial genealógico básico (hasta el nivel de padres, esto es usuario->hermanos (max 3 hermanos incluyendo el usuario)>padres). La idea del programa es que el usuario pueda ingresar los datos de su árbol genealógico y luego el programa permita listar el árbol genealógico en pantalla según la perspectiva de cada persona en el arbol, ejemplo: Si se elije ver desde Usuario aparecería algo como: Usuario, tiene 2 hermanos: Fulano y Sutano y sus padres son: Papá y Mamá. Papá está casado con mama y tiene 3 hijos: Fulano, Sutano y Usuario. (Todo referenciado a través de punteros). Nota: Cada persona es una estructura que debe contener nombre, y la referencia a los otros punteros. (30%) NOTA: De acuerdo con el progreso del programa, usted debe definir el tipo de variable al que debe apuntar cada uno de los punteros. 3) Realice un programa que cumpla con los siguientes requisitos: (30%) a. b. c. d. e. f. g. h. Utilice únicamente memoria dinámica. Un puntero “Ptr1”, el cual va a direccionar una V1 tipo entero. Un puntero “Ptr2”, el cual va a direccionar a una V2 tipo float. Mediante el uso de punteros el usuario debe poder asignarle valores definidos a V1 y V2 Un puntero “Ptr3”, va a direccionar el valor de la resta del contenido de “Ptr1” y “Ptr2”. Un puntero “Ptr4”, va a direccionar a una V3 tipo bool Si el valor que apunta Ptr3 es positivo Ptr4 se le asignara TRUE, si no se le asignara False Al final, se deberá mostrar el valor de Ptr3 únicamente si es positivo, en caso contrario mandar a pantalla el siguiente mensaje “Valor negativo”.