Sunteți pe pagina 1din 4

// 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");
}
}

S-ar putea să vă placă și