Leccion Evaluativa
Enviado por daramirezma • 3 de Noviembre de 2012 • 1.314 Palabras (6 Páginas) • 561 Visitas
3. Aplicación de la Memoria Dinámica con Malloc() y Free().
Se requiere implementar un programa codificado en C++ que haga uso de la gestión dinámica de memoria con las funciones malloc() y free(), que por medio de un menú de opciones permita insertar y visualizar la información de tres cursos académicos en una estructura llamada Cursos que almacenará el código del curso, el nombre del curso y el número de créditos del curso. Como resultado se espera el código fuente debidamente documentado cada línea y la captura de pantalla de las imágenes de la salida en pantalla de cada opción.
1. #include <stdio.h> //Se incluyen la librería stdio.h para el buen funcionamiento del programa y soportar la sintaxis del lenguaje
2. #include <conio.h> //Se incluyen la librería conio.h para el buen funcionamiento del programa y soportar la sintaxis del lenguaje
3. #include <stdlib.h> //Se incluyen la librería stdlib.h para el buen funcionamiento del programa y soportar la sintaxis del lenguaje
4. #include <iostream.h> //Se incluyen la librería iostream.h para el buen funcionamiento del programa y soportar la sintaxis del lenguaje
5. struct nodo { // Definimos la estructura de almacenamiento
6. char codigo_curso[20]; //Se declara la variable codigo_curso tipo char
7. char nombre_curso[30]; //Se declara la variable nombre_curso tipo char
8. char creditos_curso[2]; //Se declara la variable creditos_curso tipo char
9. struct nodo *sig; //Apunta al nodo siguiente
10. }curso_academico; //Tipo de dato curso_academico que es de tipo estructura nodo
11. struct nodo *cab, *ult, *nuevo; //Declaramos los apuntadores *cab(para identificar el inicio de la estructura), *ult(para identificar cual es el último elemento de la estructura), *nuevo(para identificar cual es el nuevo elemento de la estructura)
12. void encadenar() //Se declara la función encadenar que no va retornar ningún valor
13. { //Se abre la llave indicando que inician las instrucciones de la función encadenar
14. if (cab == NULL) //Se verifica si la estructura se encuentra vacía
15. { cab = nuevo; //El apuntador cab apunta nuevo
16. ult = nuevo; //El apuntador ult apunta nuevo
17. } //Se cierra la llave finalizando el condicional si
18. else { ult -> sig = nuevo; //Si la estructura no esta vacia el último nodo de la estructura se está conectando al nuevo nodo
19. ult = nuevo; //El apuntador ult apunta a nuevo
20. } //Se cierra la llave finalizando el condicional entonces
21. } //Se cierra la llave finalizando la funcion encadenar
22. void insertar() //Se declara la función insertar que no va retornar ningún valor
23. { //Se abre la llave indicando que inician las instrucciones de la función insertar
24. int i; //Se declara la variable i tipo entero
25. if(cab == NULL) //Se verifica si la estructura se encuentra vacía
26. ult=NULL; //Si la estructura está vacía, al apuntador ult apunta a NULL (nada)
27. nuevo =(struct nodo*) malloc (sizeof(curso_academico)); //Se crea un nuevo nodo con los campos de la estructura curso_academico
28. cout << "\n REGISTRO DE DATOS \n\n"; //Se despliega un mensaje en pantalla
29. for(i=1;i<=3;i++) //Ciclo for usado para el ingreso de los cursos
30. { //Se abre la llave indicando que inician las instrucciones del ciclo for
31. cout << "Digite el codigo del curso No. “<< i <<" : "; //Se despliega un mensaje en pantalla
32. cin >> nuevo[i].codigo_curso; //Asigna el valor digitado al campo codigo_curso del nodo apuntado por nuevo[i]
33. cout << "Digite el nombre del curso No. "<< i <<" : "; //Se despliega un mensaje en pantalla
34. cin >> nuevo[i].nombre_curso; //Asigna el valor digitado al campo nombre_curso del nodo apuntado por nuevo[i]
35. cout << "Digite los creditos del curso No. "<< i <<" : "; //Se despliega un mensaje en pantalla
36. cin >> nuevo[i].creditos_curso; //Asigna el valor digitado al campo creditos_curso del nodo apuntado por nuevo[i]
37. cout<<"\n\n "; //Se realiza un salto de línea
38. } //Se cierra la llave finalizando el condicional for
39. cout << "\n----- FIN INGRESO -----\ "; //Se despliega un mensaje en pantalla
40. getch(); //La función getch() que hace la ejecución del programa termine solo cuando se presione una tecla
41. encadenar(); //Se llama la función encadenar que es donde se integra el nuevo nodo a la estructura
42. } //Se cierra la llave indicando que termina la función insertar
43. void listar() //Se declara la función listar que no va retornar ningún valor
44. { //Se abre la llave indicando que inician las instrucciones de la función listar
45. int i; //Se declara la variable i tipo int
46. clrscr(); //Se limpia pantalla por medio de la función clrscr() para que las salidas en pantalla de anteriores ejecuciones sigan mostrándose
47. if (cab==NULL) //Se verifica si la estructura se encuentra vacía
48. cout << "\nNO HAY CURSOS REGISTRADOS\n\n"; //Se despliega
...