Universidad de Antioquia Facultad de Ingeniería Laboratorio de Informática I Práctica 10 – Memoria dinámica, estructuras y listas enlazadas 1. Objetivos Aprender a crear bloques de memoria dinámica con malloc() y free() Aprender a utilizar estructuras Aprender a crear listas enlazadas 2. Descripción de la práctica Esta práctica se dedicará a la solución de tres de problemas buscan poner práctica el uso de memoria dinámica, estructuras y listas enlazadas, además de otros temas anteriores como apuntadores. Para cada programa, se debe crear un proyecto en Qt en el que se debe validar la correcta compilación y ejecución de éste. Los programas deben ser desarrollados en parejas y sustentados ante el profesor. 3. Problemas a solucionar Implemente un programa en C (y su correspondiente proyecto en Qt) para cada uno de los siguientes problemas. No olvide utilizar free() después de un llamado a malloc(). 1. Cree una función que retorne el elemento mayor de un arreglo de enteros. La función debe recibir como argumentos un apuntador al arreglo y la longitud de éste. En el main, el usuario debe indicar el tamaño del arreglo y luego ingresar sus elementos. El arreglo debe ser creado con malloc. 2. Cree un arreglo de 5 estructuras que tengan dos campos cadena de caracteres de tamaño 20. Cada estructura se usará para almacenar el nombre de un país y su capital. Al iniciar, el programa debe pedirle al usuario que ingrese la información de países y capitales. Luego, el programa debe ponerse en modo búsqueda, de manera que el usuario pueda preguntar por la capital de algún país y el programa deberá responder con la capital, si la conoce, o informar que ese país no está en la lista. Para buscar el nombre de un país en el arreglo de estructuras es necesario comparar cadenas de caracteres. Se sugiere utilizar la función strcmp() de la librería string.h 3. Escriba un programa para gestionar la información de los estudiantes de un curso. Éste debe ofrecer al usuario el siguiente menú de opciones: Ingresar datos de estudiantes Averiguar información de un estudiante por documento Averiguar información de un estudiante por nombre (ver ejercicio 1) Ver lista de estudiantes que ganaron Ver lista de estudiantes que perdieron Borrar toda la información Siga estos lineamientos para la creación del programa: Defina una plantilla de estructura name con dos miembros: una cadena para guardar el primer nombre y una cadena para guardar el primer apellido del estudiante. Defina una plantilla de estructura student con los siguientes miembros: una estructura name un entero para el número de documento un arreglo grades para guardar tres notas parciales una variable para guardar el promedio de las tres notas un apuntador a estructura student que se llame next Basándose en la plantilla student, cree una lista enlazada donde cada nodo almacenará la información de un estudiante. Defina tres apuntadores a estructura student para manipular la lista enlazada: head, current, prev Use malloc() para crear cada nodo de la lista y free() para borrar nodos de ésta. Al ingresar los datos de cada estudiante, el programa debe automáticamente calcular y guardar el promedio del estudiante en el campo correspondiente. Use funciones para organizar el programa. 4. Ejercicio opcional para bonificación: Al programa del ejercicio 3, agregue una opción al menú que permita guardar toda la información de los estudiantes en un archivo. 4. Evaluación Utilizando la plataforma de AprendeenLínea, envíe un archivo comprimido que contenga todos los proyectos de Qt desarrollados. Añada además, un archivo de texto indicando quiénes realizaron la práctica.