martes, 20 de noviembre de 2012

Al momento de su ingreso al hospital, a un paciente se le solicitan los siguientes datos: Nombre, Edad, Sexo, Teléfono, Seguro

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:
  1. Niños: hasta 13 años. 
  2. Jóvenes: mayores de 13 años y menores de 30 años. 
  3. 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.
Nota: Se manejará un máximo de 100 pacientes.


#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