Memoria dinámica, estructuras y

Anuncio
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.
Descargar