// Programa para ayudar a Yasmin a entender el lenguaje C/C++
#include <stdio.h> //Se incluye la libreria de input/output para entrada y salid
a de textos generalmente #include <stdlib.h> //Se incluye la libreria de funciones de C/C++ como free,del ete,srand,atof,atoi ,etc #include <string.h> //Inclute la libreria de strings
struct persona { //Comenzaremos creando un registro de una persona, va con el
nombre struct y {} char nombre[10]; //Char para leer caracteres el [10] significa que maximo l eo 10 caracteres int dia_nac; int mes_nac; int ano_nac; int valor; persona *sig; //Apunta al registro con la variable 'sig' para moverse por lo s nodos }; //Aqui termina el registro void RegistrarPersona (persona **p, int x){ //Esta sera la funcion 'Insertar' . En los parametros pasamos persona que apunta a p (por referencia) y la variable x int i; for (i=1; i <=x; i++){ //El for que leera la cantidad de nodos que se crearan , a partir de ahi se introduce todos los datos persona *t = new persona; //Creamos la variable que crea los nodos donde i ra la informacion de la persona, se utiliza el comando new printf ("\n Registro Numero:%d", i); // Esto aparecera luego como Registro 1 Registro 2 Registro 3 .... printf ("\nNombre de la persona:"); scanf ("%s", t->nombre); //Leemos '%s' un string y pasamos la variable aux iliar -> a nombre, esto lee el nombre fflush (stdin); //Libera la memoria embasurada, recomendado hacer despue s de cada scanf printf ("\nDia de nacimiento:"); scanf ("%d", &t->dia_nac); //Leemos un entero y pasamos con auxiliar -> a d ia fflush (stdin); printf("\nMes de nacimiento:"); scanf ("%d", &t->mes_nac); // Leemos un entero y pasamos con auxiliar -> a m es fflush (stdin); printf ("\nAno nacimiento:"); scanf ("%d", &t->ano_nac); //Leemos un entero y pasamos con auxiliar -> a an o fflush (stdin); t->sig= (*p); //Esta variable que apunta a la cabeza del nodo, cuando se pa sa con -> sig ahora se movera al siguiente nodo, p tiene que ir (*p) porque es p or referencia (*p)=t; // Ahora p sera igual a t } }; void MostrarPersona (persona *p){ //Solo pasaremos en este parametro a persona q ue apunta a p
struct persona *t = p; //Aqui utilizamos el struct para poder mostrar lo qu
e esta contenido dentro de los nodos printf ("\nMostrar personas:\n"); while (t){ //Mientras exista t o un nodo printf ("\nNombre:%s", t->nombre); //Imprimimos el nombre con t-> nombre printf ("\nDia:%d",t->dia_nac); printf ("\nMes:%d", t->mes_nac); printf ("\nAno:%d\n\n",t->ano_nac); t= t->sig; } if (!t){ printf ("NULL"); } }; persona *BuscarPersona(persona *p, char x[10]){ //Aqui haremos la funcion 'Bu scar' persona por el nombre, pasamnos en los parametros a persona que apunta a p y la variable char que sera lo que estamos buscando struct persona *t= p; //Nuestro puntero cabeza while ((t) && strcoll(x, t->nombre))// Mientras exista t (un nodo) y strcoll (compara el string de x con t->nombre ) t= t->sig; // Se mueve a la siguiente casilla return (t); //Mostramos si consiguio a la persona }; void EliminarPersona (persona **p, char x[10]){ //Aqui haremos la funcion 'Elim inar' por nombre, es decir, buscamos el nombre y eliminamos el registro, pasamos los parametros persona que apunta a p y x que es lo que buscamos struct persona *t= (*p); struct persona *ant= NULL; while (t){ if (strcoll(x,t->nombre)== 0){ // EL igual a 1 significa que si lo enco ntro, por lo tanto lo eliminara ant = t; t= t->sig; } else{ if (ant= NULL){ ant = t; t=t->sig; delete ant; ant=t; } else{ ant= t->sig; delete t; } } t= ant; } }; int main(){ //Llegamos al main y vamos a crear un menu int opcion = -1, n = 0; //Creamos la variable opcion en -1 (ya veran)
y n para leer un numero, ya inicializada en 0
char x[10]; //Creamos la variable x para leer nombres persona *p = NULL; //Creamos la variable persona que apunta a p e n NULL persona *k = NULL; while (opcion !=0 ){ alizamos en -1 system("cls");
//Mientras la opcion no sea 0, por eso la inici
//System("cls") limpiar pantalla
printf("\nMenu de registro de persona\n");
printf ("\n 1.Registrar persona\n"); printf ("\n 2.Mostrar persona\n"); printf ("\n 3.Buscar persona\n"); printf ("\n 4.Eliminar persona \n"); printf ("\nIndicar opcion:"); opcion = 0; scanf ("%i", &opcion); //Leemos la opcion system ("cls"); //Limpiamos pantalla printf ("\n\n"); switch (opcion){ case 1: printf ("\nCuantas personas desea registrar?"); scanf ("%i", &n); //Aqui leemos el numero a insertar fflush (stdin); RegistrarPersona (&p, n); //Llamamos a nuestra funcion registrar , la variable p ya no apunta a nulo break; //Aqui se detiene cuando se termina el case case 2: MostrarPersona(p); //Llamamos a la funcion Mostrar Persona y p no apunta a nulo break; case 3: printf ("\nColoque el nombre de la persona que desea buscar:"); scanf("%s", x); //Leemos el nombre fflush (stdin); BuscarPersona (p,x); //Llamamos a la funcion buscar con p y x k= BuscarPersona (p,x); //K toma el valor de buscar if (k){ //Si existe k mostramos MostrarPersona(p); } else { // Si no existe imprimimos printf("No se encontro la persona"); } break; case 4: printf ("\nIndique el nombre de la persona que desea eliminar:") ; scanf ("%s", x); //leemos el nombre fflush(stdin); EliminarPersona(&p,x); //Llamamos a la funcion Eliminar persona con p y x break; } if (opcion) { printf( "\n\n"); system("pause"); system("cls"); } }