Vous êtes sur la page 1sur 4

Se requiere desarrollar un programa que permita automatizar los datos de una encuesta de

ndices de masa corporal. Los datos deben ser almacenados en una lista, a cada encuestado
se le pedir su nombre, cedula, peso y estatura, y el imc y la evaluacin sern calculados y
asignados automticamente.
El programa contar con el siguiente men de opciones:
1) Ingresar datos de un encuestado.
2) Visualizar datos de la encuesta.
3) Buscar encuestado por su CI.
4) Mostrar grupo de evaluacin especfico.
#include<conio.h>
#include<iostream.h>
#include<math.h>
struct DATO
{
int cedula;
char nombre[30], eval[20];
float peso, estatura, imc;
};
struct NODO
{
DATO Info;
NODO *Sig;
};
typedef NODO *ptNODO;
ptNODO POS_INSER(ptNODO Lista, float IMC)
{ ptNODO P=NULL,A=Lista;
if(A != NULL)
{ while(IMC>=A->Info.imc && A->Sig!=NULL)
{ P=A;
A=A->Sig;
}
if(IMC>=A->Info.imc) P=A;
}
return P;
}
void INSERTAR_ORD(ptNODO &Lista, DATO Elem)
{ ptNODO A, NUEVO;
NUEVO=new(NODO);
NUEVO->Info=Elem; NUEVO->Sig=NULL;
if(Lista==NULL) Lista=NUEVO;
else
{ A=POS_INSER(Lista,Elem.imc);
if(A==NULL)
{ NUEVO->Sig=Lista;
Lista=NUEVO; }

else
{ NUEVO->Sig=A->Sig;
A->Sig=NUEVO; }
}
}
void MOSTRAR (ptNODO Lista)
{ ptNODO A=Lista;
if (A != NULL)
{ cout<<"Nombre
Cedula IMC Evaluacion\n";
while (A!= NULL)
{ cout<< A->Info.nombre<<" ";
cout<< A->Info.cedula<<" ";
cout<< A->Info.imc<<" ";
cout<< A->Info.eval<<endl;
A= A->Sig;
}
getch();
}
else cout << "Lista Vacia ";
}
void MOSTRAR_EVAL (ptNODO Lista, char Eval[])
{ ptNODO A=Lista;
int band=0;
if (A != NULL)
{ band=1;
cout<<"Nombre
Cedula IMC Evaluacion\n";
while (A!= NULL)
{
if(strcmpi(Eval, A->Info.eval)==0)
{ band=2;
cout<< A->Info.nombre<<" ";
cout<< A->Info.cedula<<" ";
cout<< A->Info.imc<<" ";
cout<< A->Info.eval<<endl;
}
A= A->Sig;
}
if(band==0)
cout<<"Lista vacia...";
else if (band==1)
cout<<"No hay personas con esa evaluacion...";
getch();
}
else cout << "Lista Vacia ";
}
void validar(int &valor, int lim_inf, int lim_sup)
{
while(valor<lim_inf || valor>lim_sup)
{ cout<<"Vaor incorrecto, reintroduzca: ";

cin>>valor;
}
}
ptNODO BUSCAR(ptNODO Lista, int Cedula)
{ ptNODO A=Lista;
if(Lista!=NULL)
{ while(A->Info.cedula!=Cedula && A->Sig!=NULL) A=A->Sig;
if(A->Info.cedula==Cedula) return A;
else return NULL;
}
else
{ cout<<"Lista Vacia "<<endl;
return NULL;
}
}
void BORRAR_LISTA(ptNODO &Lista)
{ ptNODO A=Lista;
while(A!=NULL)
{
Lista=Lista->Sig;
delete A;
A=Lista;
}
}
void main()
{
ptNODO Encuesta=NULL, Buscado=NULL;
int opc=1, CedulaB;
char Eval[30];
DATO Persona;
while(opc>=1 && opc<5)
{ clrscr();
cout<<"1)Ingresar Encuestado \n2)Visualizar Datos \n";
cout<<"3)Buscar Persona por su CI \n4)Visualizar por Evaluacion\n";
cout<<"5)Salir\n";
cin>>opc;
validar(opc, 1, 5);
clrscr();
switch(opc)
{
case 1:
cout<<"Ingrese los datos del encuestado:\n";
cout<<"Nombre: "; cin.getline(Persona.nombre, 30, '.');
cout<<"Cedula: "; cin>>Persona.cedula;
cout<<"Peso: "; cin>>Persona.peso;
cout<<"Estatura: "; cin>>Persona.estatura;
Persona.imc= Persona.peso/pow(Persona.estatura,2);
if(Persona.imc<18.5)

strcpy(Persona.eval,"Infrapeso");
else if(Persona.imc<=25)
strcpy(Persona.eval, "Normal");
else if (Persona.imc<30)
strcpy(Persona.eval, "Sobrepeso");
else
strcpy(Persona.eval, "Obeso");
INSERTAR_ORD(Encuesta, Persona);
break;
case 2:
MOSTRAR(Encuesta);
break;
case 3:
cout<<"Indique la CI: ";cin>>CedulaB;
Buscado=BUSCAR(Encuesta, CedulaB);
if(Buscado)
{ cout<<"Nombre: "<<Buscado->Info.nombre<<endl;
cout<<"IMC: "<<Buscado->Info.imc<<endl;
cout<<"Evaluacion: "<<Buscado->Info.eval<<endl;
}
else
cout<<"Cedula no encontrada...";
break;
case 4:
cout<<"Indique el grupo de evaluacion: ";
cin>>Eval;
MOSTRAR_EVAL(Encuesta, Eval);
break;
case 5:
cout<<"Fin del programa...";
BORRAR_LISTA(Encuesta);
break;
}
}
}

Vous aimerez peut-être aussi