Skip to content

Instantly share code, notes, and snippets.

@jofese
Created November 9, 2014 21:02
Show Gist options
  • Save jofese/ea9cd9e233a24d267e7d to your computer and use it in GitHub Desktop.
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).
/*
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