Professional Documents
Culture Documents
del Documento
Agenda con Listas Enlazadas
Versin
1.0
Fecha
Marzo 2014
Contenido
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Introduccin
El manejo de apuntadores en el lenguaje C++ nos permite agilizar el procesamiento de los datos en las distintas operaciones que
se van dando durante la ejecucin del programa, de igual forma nos permite relacionar o reasignar valores a una variable sin que
sea necesario referirnos al nombre de la misma como se ha sealado en cursos anteriores de programacin, si sumamos a los
apuntadores estructuras de datos y objetos de las mismas tenemos un importante ahorro de cdigo lo que facilita el entendimiento
de las lneas de cdigo y el cmo viajan los datos durante la ejecucin, vista la reutilizacin de cdigo como una de las mejores
prcticas podemos realizar ms con menos y as disminuir el tiempo que utilizamos del procesador para realizar las operaciones.
Las direcciones de memoria juegan un papel de suma importancia ya que mediante estas es como realmente se agiliza el manejo
de los datos que contienen dichas direcciones de memoria, siendo de mucha ayuda cuando deseamos que el procesador optimice
tiempos de ejecucin y atencin de procesos/operaciones.
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Objetivo
Mostrar al lector el uso y manejo de apuntadores para controlar el flujo de informacin durante la ejecucin de la aplicacin para
una eficiente administracin de memoria RAM, lo que deriva en un control y un manejo transparente de los valores, operaciones
y resultados que arroja, la declaracin, inclusin y los modificadores de las funciones conocidas para incluir la referencia a los
apuntadores y contenedores a los que apuntan este tipo de elementos tan recurrentes.
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Desarrollo
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Al iniciar la ejecucin de la aplicacin muestra un men de opciones para el usuario, permitiendo elegir entre cuatro opciones:
Alta de registro en la agenda
Eliminar elemento de la agenda
Mostrar elementos de la agenda
Salir de la aplicacin
El usuario debe ingresar el nmero correspondiente a la opcin deseada.
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Si el usuario ingresa un nmero que no corresponde a las opciones el programa le notifica mediante un mensaje en pantalla
indicando que puede intentar el ingreso de algn nmero que corresponda a alguna de las opciones del men:
Este mensaje es constante mientras el usuario no ingrese una opcin vlida del men, un punto de seguridad contemplando el
correcto manejo de la informacin y evitando basura en el programa.
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Opcin 1: Ingresar registro a la agenda
Al ingresar el nmero 1 en el men del programa, limpia la pantalla y comienza a solicitar informacin al usuario la cual ser
asignada al nuevo registro de la agenda, los valores a ingresar son:
Nombre
Apellido Paterno
Apellido Materno
Fecha de nacimiento a 8 posiciones, dos para el da, dos para el mes y las ltimas cuatro correspondientes al ao
Nmero telefnico a 10 posiciones
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Universidad del Valle de Mxico Campus Roma
Versin
1.0
Fecha
Marzo 2014
Opcin 2: Eliminar un elemento de la agenda
Al ingresar el nmero 2 en el men del programa, solicita al usuario el texto referente al apellido paterno que se desea eliminar:
Universidad del Valle de Mxico Campus Roma
10
Versin
1.0
Fecha
Marzo 2014
El texto debe ser igual al registrado, la aplicacin no valida mayscula de minsculas ya que el dato capturado se convierte a
maysculas y as se realiza la bsqueda del valor, en caso de ser encontrado el dato procede con el borrado de dicho registro y
notifica al usuario mediante un mensaje en pantalla.
Universidad del Valle de Mxico Campus Roma
11
Versin
1.0
Fecha
Marzo 2014
En caso de no encontrarse el dato en la agenda se le notifica al usuario y se le insta a continuar con la ejecucin al presionar una
tecla:
Solo es requerido que el usuario presione una tecla para continuar con la ejecucin del programa.
Universidad del Valle de Mxico Campus Roma
12
Versin
1.0
Fecha
Marzo 2014
Opcin 3: Listar los registros de la agenda
Para listar los registros debemos teclear el nmero 3 en el men principal, la pantalla resultante nos muestra los elementos actuales
de la agenda:
Universidad del Valle de Mxico Campus Roma
13
Versin
1.0
Fecha
Marzo 2014
Nombre: Erika
Apellido P: Zamora
Apellido M: Calderon
Fecha de Nac: 23 Septiembre de 2011
Telfono: 8299375560
Universidad del Valle de Mxico Campus Roma
14
Versin
1.0
Fecha
Marzo 2014
Ingresar la informacin.
Universidad del Valle de Mxico Campus Roma
15
Versin
1.0
Fecha
Marzo 2014
Mostrar la agenda con los elementos nuevos.
Universidad del Valle de Mxico Campus Roma
16
Versin
1.0
Fecha
Marzo 2014
Eliminar el registro de apellido Zamora.
Universidad del Valle de Mxico Campus Roma
17
Versin
1.0
Fecha
Marzo 2014
Enlistar los elementos actuales de la agenda.
Universidad del Valle de Mxico Campus Roma
18
Versin
1.0
Fecha
Marzo 2014
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<string.h>
#include<ctype.h>
19
Versin
1.0
Fecha
Marzo 2014
typedef tipoNodo *Lista;
Lista lista = NULL;
20
Versin
1.0
Fecha
Marzo 2014
strcpy(nuevo->Apat,apat);
printf("\nIngresa el apellido Materno: ");
scanf("%s", &amat);
Mayus(amat);
strcpy(nuevo->Amat,amat);
printf("\nIngresa la fecha de nacimiento \nej.: 13012014 = 13 de enero de 2014.: ");
scanf("%d", &fnac);
nuevo->Fnac = fnac;
printf("\nIngresa el tel%cfono de contacto a 10 d%cgitos: ", 130, 161);
scanf("%d", &tel);
nuevo->Tel = tel;
//Ordenamiento para cada conjunto de datos que se ingresan
if(lista==NULL || strcmp(lista->Apat,nuevo->Apat) > 0)
{
nuevo->siguiente = lista;
lista = nuevo;
}
else
{
anterior = lista;
while(anterior->siguiente!=NULL && strcmp(anterior->siguiente->Apat,nuevo->Apat) <= 0)
{
anterior = anterior->siguiente;
Universidad del Valle de Mxico Campus Roma
21
Versin
1.0
Fecha
Marzo 2014
}
nuevo->siguiente = anterior->siguiente;
anterior->siguiente = nuevo;
}
}
void elimina()
{
char apser[20];
pNodo reco, ante;
reco = lista;
ante = NULL;
if(reco == NULL)
{
printf("Lista vac%ca...", 161);
getch();
}
else
{
printf("\nIngresa el Apellido paterno que deseas eliminar: ");
scanf("%s", &apser);
Mayus(apser);
Universidad del Valle de Mxico Campus Roma
22
Versin
1.0
Fecha
Marzo 2014
while(reco != NULL && strcmp(reco->Apat,apser) < 0)
{
ante = reco;
reco = reco->siguiente;
}
if(reco == NULL || strcmp(reco->Apat,apser) != 0)
{
printf("\nNo se encontr%c valor");
getch();
return;
}
else
{
if(ante == NULL)
{
lista = reco->siguiente;
}
else
ante->siguiente = reco->siguiente;
free(reco);
printf("Registro eliminado, presiona una tecla para continuar...");
getch();
}
}
Universidad del Valle de Mxico Campus Roma
23
Versin
1.0
Fecha
Marzo 2014
}
void muestra()
{
pNodo recorre = lista;
if(lista == NULL)
{
printf("Lista vac%ca...", 161);
getch();
}else
{
printf("Nombre\tAp Paterno\tAp Materno\tFecha Nac\tTel%cfono\n", 130);
while(recorre != NULL)
{
printf("%s\t %s\t\t %s\t\t %d\t %d\n", recorre->Nombre, recorre->Apat, recorre->Amat, recorre->Fnac, recorre->Tel);
recorre = recorre->siguiente;
}
getch();
}
}
void menu()
Universidad del Valle de Mxico Campus Roma
24
Versin
1.0
Fecha
Marzo 2014
{
system("cls");
printf("Bienvenido, a continuaci%cn se muestra el men%c de opciones:\n", 162, 163);
printf("1.-Agregar elemento a la agenda\n");
printf("2.-Eliminar un registro de la agenda\n");
printf("3.-Mostrar el contenido de la agenda\n");
printf("4.-Salir\n");
}
main()
{
char resp;
do
{
system("cls");
menu();
scanf("%d", &opc);
if(opc > 0 && opc < 4)
{
switch (opc)
{
case 1: agregar();break;
case 2: elimina();break;
case 3: muestra(); break;
}
Universidad del Valle de Mxico Campus Roma
25
Versin
1.0
Fecha
Marzo 2014
}
if(opc > 4)
{
printf("Opci%cn inv%clida, vuelve a intentarlo. \nERROR 401: Forbiden", 162, 160);
getch();
}
}while(opc != 4);
}
Universidad del Valle de Mxico Campus Roma
26
Versin
1.0
Fecha
Marzo 2014
Conclusiones
Despus de la codificacin del programa, la ejecucin y el ejercicio efectuado se valid la funcionalidad del mismo y se corrobor
la utilidad de los apuntadores para un mejor manejo de la informacin, el paso de parmetros y en este caso en particular el
ordenamiento de los elementos conforme se fueron ingresando, el programa no presento errores ni excepciones ya que se
contemplaron elementos de seguridad que restringen al usuario en cuanto al men y la bsqueda de elementos.
Universidad del Valle de Mxico Campus Roma
27