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