Al momento de su ingreso al hospital, a un paciente se le solicitan los
siguientes datos: Nombre, Edad, Sexo, Teléfono, Seguro (este campo tendrá el
valor verdadero si el paciente tiene seguro y Falso si no lo posee).
Escriba un programa que pueda llevar a cabo las siguientes operaciones:
- Listar los nombres de todos los pacientes hospitalizados.
- Obtener el porcentaje de pacientes hospitalizados en las siguientes categorías:
- Niños: hasta 13 años.
- Jóvenes: mayores de 13 años y menores de 30 años.
- Adultos: mayores de 30 años.
- Obtener el porcentaje de hombres y mujeres hospitalizados.
- Dado el nombre de un paciente, listar todos los datos relacionados a dicho paciente.
- Calcular el porcentaje de pacientes que poseen seguro.
#include<iostream>
#include<cstring>
#include<cstdlib>
using namespace std;
const int tam=100;
const int tam_nombre=50;
const int tam_sex=10;
const int tam_tlf=11;
const int tam_seguro=3;
class datos
{
private:
char nombre[tam_nombre];
int edad;
char sexo[tam_sex];
char telefono[tam_tlf];
bool seguro;
public:
datos(){};
datos(char [], int &, char [], char [], char []);
~datos(){};
void mostrar(char []);
int obt_edad();
bool obt_seguro();
friend void ingresar_paciente(datos [], int &, char [], int &, char [], char [], char []);
friend int buscar(datos [], char [], int &);
friend void porc_pacientes_sexo(datos [], int &);
};
int menu();
int main()
{
int edad_paciente, opc, cont=0, cont_ninos=0, cont_jovenes=0, cont_adultos=0, cont_seguro=0, indice, i;
float porc_ninos, porc_jovenes, porc_adultos, porc_seguro;
char nombre_paciente[tam_nombre], sexo_paciente[tam_sex], tlf_paciente[tam_tlf], seguro_paciente[tam_seguro];
datos pacientes[tam];
do{
opc=menu();
switch(opc)
{
case 1:
{
ingresar_paciente(pacientes, cont, nombre_paciente, edad_paciente, sexo_paciente, tlf_paciente, seguro_paciente);
system("cls");
break;
}
case 2:
{
for(i=0; i<cont; i++)
{
pacientes[i].mostrar(seguro_paciente);
}
cin.get();
system("cls");
break;
}
case 3:
{
for(i=0; i<cont; i++)
{
if(pacientes[i].obt_edad()<=13)
{
cont_ninos++;
}
else
{
if((pacientes[i].obt_edad()>13)&&(pacientes[i].obt_edad()<=30))
{
cont_jovenes++;
}
else
{
cont_adultos++;
}
}
}
porc_ninos=(cont_ninos*100)/cont;
porc_jovenes=(cont_jovenes*100)/cont;
porc_adultos=(cont_adultos*100)/cont;
cout<<"\n\n\t El porcentaje de niños hospitalizados es: "<<porc_ninos<<"%"<<endl;
cout<<"\n\n\t El porcentaje de jovenes hospitalizados es: "<<porc_jovenes<<"%"<<endl;
cout<<"\n\n\t El porcentaje de adultos hospitalizados es: "<<porc_adultos<<"%"<<endl;
cont_ninos=0;
cont_jovenes=0;
cont_adultos=0;
cin.get();
system("cls");
break;
}
case 4:
{
porc_pacientes_sexo(pacientes, cont);
cin.get();
system("cls");
break;
}
case 5:
{
cout<<"\n\n\t Nombre: ";
cin.getline(nombre_paciente, tam_nombre);
for(int i=0; i<(strlen(nombre_paciente)); i++)
{
nombre_paciente[i]=toupper(nombre_paciente[i]);
}
indice=buscar(pacientes, nombre_paciente, cont);
if(indice!=-1)
{
cout<<"\n\t Informacion del paciente"<<endl;
pacientes[indice].mostrar(seguro_paciente);
}
else
{
cout<<"\n\t Paciente no encontrado"<<endl;
}
cin.get();
system("cls");
break;
}
case 6:
{
for(i=0; i<cont; i++)
{
if(pacientes[i].obt_seguro()==true)
{
cont_seguro++;
}
}
porc_seguro=(cont_seguro*100)/cont;
cout<<"\n\n\t El porcentaje de pacientes hospitalizados con seguro es: "<<porc_seguro<<"%"<<endl;
cont_seguro=0;
cin.get();
system("cls");
break;
}
case 7:
{
exit(0);
break;
}
default:
{
cout<<"\n\n\t Opcion invalida"<<endl;
cin.get();
system("cls");
break;
}
}
}while(opc!=7);
cin.get(); cin.get();
return 0;
}
datos::datos(char nombre_paciente[tam_nombre], int &edad_paciente, char sexo_paciente[tam_sex], char tlf_paciente[tam_tlf], char seguro_paciente[tam_seguro])
{
strcpy(nombre, nombre_paciente);
edad=edad_paciente;
strcpy(sexo, sexo_paciente);
strcpy(telefono, tlf_paciente);
if(strcmp(seguro_paciente, "SI")==0)
{
seguro=true;
}
else
{
seguro=false;
}
}
void datos::mostrar(char seguro_paciente[tam_seguro])
{
cout<<"\n\n\t Nombre: "<<nombre<<endl;
cout<<"\t Edad: "<<edad<<endl;
cout<<"\t Sexo: "<<sexo<<endl;
cout<<"\t Telefono: "<<telefono<<endl;
if(seguro==true)
{
strcpy(seguro_paciente, "SI");
}
else
{
strcpy(seguro_paciente, "NO");
}
cout<<"\t Seguro: "<<seguro_paciente<<endl;
}
int datos::obt_edad()
{
return edad;
}
bool datos::obt_seguro()
{
return seguro;
}
int menu()
{
int opc;
cout<<"\n\n\t 1.- Registrar paciente"<<endl;
cout<<"\t 2.- Listar pacientes"<<endl;
cout<<"\t 3.- Porcentaje de pacientes hospitalizados por categorias"<<endl;
cout<<"\t 4.- Porcentaje de hombres y mujeres hospitalizados"<<endl;
cout<<"\t 5.- Mostrar informacion de un pacientes"<<endl;
cout<<"\t 6.- Porcentaje de pacientes hospitalizados asegurados"<<endl;
cout<<"\t 7.- Salir"<<endl;
cout<<"\t Indique opcion: ";
cin>>opc;
cin.ignore();
system("cls");
return opc;
}
void ingresar_paciente(datos pacientes[tam], int &cont, char nombre_paciente[tam_nombre], int &edad_paciente, char sexo_paciente[tam_sex], char tlf_paciente[tam_tlf], char seguro_paciente[tam_seguro])
{
cout<<"\n\n\t Nombre: ";
cin.getline(nombre_paciente, tam_nombre);
for(int i=0; i<(strlen(nombre_paciente)); i++)
{
nombre_paciente[i]=toupper(nombre_paciente[i]);
}
cout<<"\t Edad: ";
cin>>edad_paciente;
cin.ignore();
do{
cout<<"\t Sexo: ";
cin.getline(sexo_paciente, tam_sex);
for(int i=0; i<(tam_sex-1); i++)
{
sexo_paciente[i]=toupper(sexo_paciente[i]);
}
}while((strcmp(sexo_paciente, "MASCULINO")!=0)&&(strcmp(sexo_paciente, "FEMENINO")!=0));
cout<<"\t Telefono: ";
cin.getline(tlf_paciente, tam_tlf);
do{
cout<<"\t Seguro: ";
cin.getline(seguro_paciente, tam_seguro);
for(int i=0; i<(tam_seguro-1); i++)
{
seguro_paciente[i]=toupper(seguro_paciente[i]);
}
}while((strcmp(seguro_paciente, "SI")!=0)&&(strcmp(seguro_paciente, "NO")!=0));
datos temp(nombre_paciente, edad_paciente, sexo_paciente, tlf_paciente, seguro_paciente);
pacientes[cont]=temp;
cont++;
}
int buscar(datos pacientes[tam], char nombre_paciente[tam_nombre], int &cont)
{
int indice=-1;
for(int i=0; i<cont; i++)
{
if(strcmp(pacientes[i].nombre, nombre_paciente)==0)
{
indice=i;
break;
}
}
return indice;
}
void porc_pacientes_sexo(datos pacientes[tam], int &cont)
{
int i, cont_masculino=0, cont_femenino=0;
float porc_masculino, porc_femenino;
for(i=0; i<cont; i++)
{
if(strcmp(pacientes[i].sexo, "MASCULINO")==0)
{
cont_masculino++;
}
else
{
cont_femenino++;
}
}
porc_masculino=(cont_masculino*100)/cont;
porc_femenino=(cont_femenino*100)/cont;
cout<<"\n\n\t El porcentaje de hombres hospitalizados es: "<<porc_masculino<<"%"<<endl;
cout<<"\n\n\t El porcentaje de mujeres hospitalizados es: "<<porc_femenino<<"%"<<endl;
cont_masculino=0;
cont_femenino=0;
}
Descargar Código
0 comentarios:
Publicar un comentario