Вы находитесь на странице: 1из 26

Titulo

del Documento
Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014

Contenido


Universidad del Valle de Mxico Campus Roma

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014


Desarrollo


Universidad del Valle de Mxico Campus Roma

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014

Dentro de las validaciones al ingresar un registro se considera lo siguiente:


1. Los datos se organizan alfabticamente al ser ingresados.
2. Los registros tienen como control para el ordenamiento el Apellido Paterno.
3. Los datos tipo CHAR se almacenan en maysculas para el correcto manejo de la informacin
Una vez ingresados los datos del registro la aplicacin regresa al men inicial limpiando la pantalla previamente.


Universidad del Valle de Mxico Campus Roma

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014

Ingrese la siguiente informacin:


Nombre: Jose
Apellido P: Guerrero
Apellido M: Piesich
Fecha de Nac: 11 de Mayo de 1970
Telfono: 4738192034

Nombre: Erika
Apellido P: Zamora
Apellido M: Calderon
Fecha de Nac: 23 Septiembre de 2011
Telfono: 8299375560

Muestre la informacin de la agenda con las adiciones.


Elimine el registro del Apellido ZAMORA
Muestre el listado de los elementos actuales de la agenda.


Universidad del Valle de Mxico Campus Roma


14

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014


Ingresar la informacin.


Universidad del Valle de Mxico Campus Roma


15

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014


Mostrar la agenda con los elementos nuevos.


Universidad del Valle de Mxico Campus Roma


16

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014


Eliminar el registro de apellido Zamora.


Universidad del Valle de Mxico Campus Roma


17

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014


Enlistar los elementos actuales de la agenda.


Universidad del Valle de Mxico Campus Roma


18

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include<string.h>
#include<ctype.h>

int opc, fnac, tel;


char nombre[20], apat[20], amat[20];

typedef struct nodo {


char Nombre[20];
char Apat[20];
char Amat[20];
int Fnac;
int Tel;
struct nodo *siguiente;
} tipoNodo;
typedef tipoNodo *pNodo;

Universidad del Valle de Mxico Campus Roma


19

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

Versin
1.0

Fecha
Marzo 2014


typedef tipoNodo *Lista;
Lista lista = NULL;

void Mayus(char s[])


{
int j;
for (j=0; j < strlen(s); j++)
s[j]=toupper(s[j]);
}
void agregar()
{
pNodo nuevo, anterior;
nuevo = (pNodo)malloc(sizeof(tipoNodo));
system("cls");
printf("Ingresa el nombre: ");
scanf("%s", &nombre);
Mayus(nombre);
strcpy(nuevo->Nombre,nombre);
printf("\nIngresa el apellido Paterno: ");
scanf("%s",&apat);
Mayus(apat);

Universidad del Valle de Mxico Campus Roma


20

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Titulo del Documento


Agenda con Listas Enlazadas

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

Profesor: Francisco Nazario

Вам также может понравиться