Created
November 9, 2014 21:02
-
-
Save jofese/ea9cd9e233a24d267e7d to your computer and use it in GitHub Desktop.
Ejercicios con Listas Enlazadas Simples: Registrar a una familia (identificacion: "Los Perez", padre, madre, n o m hijos).
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Autor: Joel Cesar Fernandez Segura | |
Curso: Estructura de Datos | |
Ejercicio: REGISTRAR INTEGRANTES DE FAMILIA | |
IDE: CodeBlocks | |
Pagina Web: http://codebotic.blogspot.com | |
*/ | |
#include<iostream> | |
#include<cstdlib> | |
#define maxchar 50 | |
using namespace std; | |
struct nodo2{ | |
char hijo[maxchar];//almacena el nombre de cada hijo | |
}; | |
struct nodo{ | |
char id[maxchar]; //campo identificacion ejemplo "LOS PEREZ" | |
char padre[maxchar]; | |
char madre[maxchar]; | |
int cantHijos;// almacena la cantidad de hijos | |
nodo2 hijos[maxchar];//arreglo de cadenas que contiene a cada hijo | |
struct nodo *sgte; | |
}; | |
typedef struct nodo *TFamilia; | |
/*---------------------------FUNCION MENU -------------------------*/ | |
void menu(void){ | |
cout<<"\n\t\t[ REGISTRO DE FAMILIAS ]\n"; | |
cout<<"\t\t----------------------------------\n\n"; | |
cout<<" 1. REGISTRAR FAMILIA "<<endl; | |
cout<<" 2. LISTAR FAMILIAS "<<endl; | |
cout<<" 3. SALIR "<<endl; | |
cout<<"\n Ingrese opcion : "; | |
} | |
/*---------------------FUNCION REGISTRAR FAMILIA -------------------*/ | |
void registrar_familia(TFamilia &lista){ | |
TFamilia t,q = new(struct nodo); | |
cout<<"\n\n\t\t[ REGISTRO ]\n"; | |
cout<<"\t\t------------"; | |
cout<<"\n\tDATOS DE LA FAMILIA \n"; | |
cin.ignore();cout<<"\n\tIDENTIFICACION:"; cin.getline(q->id,maxchar); | |
cin.ignore();cout<<"\n\tPADRE:"; cin.getline(q->padre,maxchar); | |
cin.ignore();cout<<"\n\tMADRE:"; cin.getline(q->madre,maxchar); | |
cout<<"\n\tIngrese Cantidad de hijos:"; cin>>q->cantHijos; | |
for(int i=0;i<q->cantHijos;i++){ | |
cin.ignore(); | |
cout<<"\n\tIngrese Hijo(a) # "<<i+1<<" : "; | |
cin.getline(q->hijos[i].hijo,maxchar); | |
} | |
cout<<endl; | |
system("cls"); | |
q->sgte = NULL; | |
if(lista==NULL){ | |
lista = q; | |
} else { | |
t = lista; | |
while(t->sgte!=NULL){ | |
t = t->sgte; | |
} | |
t->sgte = q; | |
} | |
} | |
/*----------------- FUNCION MOTRAR TODAS LAS FAMILIAS -------------*/ | |
void listar_familias(TFamilia q){ | |
system("cls"); | |
int i=1; | |
cout<<"\n\n\t[ LISTA DE FAMILIAS REGISTRADAS ]"; | |
cout<<"\n\n\t-----------------------------------"<<endl; | |
while(q!=NULL){ | |
cout<<"\n\n\tDATOS DE FAMILIA ["<<i<<"] "; | |
cout<<"\n\t------------------------"; | |
cout<<"\n\tIDENTIFICACION: "<<q->id<<endl; | |
cout<<"\n\tPADRE : "<<q->padre<<endl; | |
cout<<"\n\tMADRE : "<<q->madre<<endl; | |
cout<<"\n\tHIJOS:"<<endl; | |
for(int j=0;j<q->cantHijos;j++){ | |
cout<<endl<<"\t"<<j+1<<".- "<<q->hijos[j].hijo; | |
} | |
q=q->sgte; | |
i++; | |
} | |
} | |
/*------------------------FUNCION PRINCIPAL-------------------------*/ | |
int main(void){ | |
system("color 0a"); | |
TFamilia lista=NULL; | |
int op; | |
do{ | |
menu(); | |
cin>>op; | |
switch(op){ | |
case 1: registrar_familia(lista); | |
break; | |
case 2: listar_familias(lista); | |
break; | |
case 3: return 0; | |
default: cout<<"\nINGRESE UNA OPCION VALIDA...\n"; break; | |
} | |
cout<<endl; | |
system("pause"); system("cls"); | |
}while(op!=6); | |
system("pause"); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment