Dev - C++ - Arreglo de Registros

 
Vista:
sin imagen de perfil

Arreglo de Registros

Publicado por Ignacio (4 intervenciones) el 07/09/2022 00:21:25
Me podrian ayudar con este algoritmo, gracias.

AL MOMENTO DE SU INGRESO AL HOSPITAL, A UN PACIENTE LE SOLICITAN LOS DATOS: NOMBRE, EDAD, SEXO, DOMICILIO (CALLE, NÚMERO, CIUDAD), TELEFONO, SI ESTÁ O NO ASEGURADO. USANDO COMO ESTRUCTURA UN ARREGLO DE REGISTROS:

A) LISTE LOS NOMBRES DE TODOS LOS PACIENTES HOSPITALIZADOS

B) OBTENGA EL PORCENTAJE DE PACIENTES HOSPITALIZADOS QUE SON NIÑ@S MENORES DE 13 AÑOS

C) OBTENGA EL PORCENTAJE DE MUJERES HOSPITAIZADAS

D) DADO EL NOMBRE DE UN PACIENTE, LISTE LOS DATOS RELACIONADOS A SU DIRECCIÓN

E) DIGA CUÁNTOS PACIENTES TIENEN SEGURO MÉDICO
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1
Ha aumentado su posición en 3 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Arreglo de Registros

Publicado por antonio (85 intervenciones) el 08/09/2022 15:43:50
Es un código muy largo pero básicamente es un bucle con switch y cases:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
bool isNumber(const string& str)
{
    return !str.empty() &&
        std::find_if(str.begin(), str.end(),
            [](unsigned char c) { return !std::isdigit(c); }) == str.end();
}
int main () {
    string registros[10][10];
    string nombre,edad,sexo,calle,numero,ciudad, telefono,asegurado;
    int intro=0;
    int num=0;
    int todos=0;
    float porcentaje=0.0;
    string nom;
    int opcion;
    do{
        cout<<"1º Introducir registro\n";
        cout<<"2º Listar pacientes\n";
        cout<<"3º Porcentaje niños menores 13 anios\n";
        cout<<"4º Porcentaje mujeres\n";
        cout<<"5º Direccion\n";
        cout<<"6º Numero de asegurados\n";
        cout<<"7º Salir\n";
        cin>>opcion;
 
        switch(opcion){
            case 1:
                cout<<"Introducir nombre\n";
                cin>>nombre;
                cout<<"Introducir edad\n";
                cin>>edad;
                while(!isNumber(edad)){
                    cout<<"Esa opcion no existe\n";
                    cout<<"Introducir la edad\n";
                    cin>>edad;
                }
                cout<<"Introducir sexo\n";
                cin>>sexo;
                while(sexo!="mujer"&& sexo!="Mujer" && sexo!="hombre" && sexo!="Hombre"){
                    cout<<"Esa opcion no existe\n";
                    cout<<"Introducir sexo\n";
                    cin>>sexo;
                }
                cout<<"Introducir Direccion\n";
                cout<<"Introducir calle\n";
                cin>>calle;
                cout<<"Introducir numero\n";
                cin>>numero;
                while(!isNumber(numero)){
                    cout<<"Esa opcion no existe\n";
                    cout<<"Introducir el numero\n";
                    cin>>numero;
                }
                cout<<"Introducir ciudad\n";
                cin>>ciudad;
                cout<<"Introducir telefono\n";
                cin>>telefono;
                cout<<"Estas asegurado\n";
                cin>>asegurado;
                while(asegurado!="si"&& asegurado!="Si" && asegurado!="SI" && asegurado!="no" && asegurado!="No" && asegurado!="NO"){
                    cout<<"Esa opcion no existe\n";
                    cout<<"Estas asegurado\n";
                    cin>>asegurado;
                }
                registros[intro][0]=nombre;
                registros[intro][1]=edad;
                registros[intro][2]=sexo;
                registros[intro][3]=calle;
                registros[intro][4]=numero;
                registros[intro][5]=ciudad;
                registros[intro][6]=telefono;
                registros[intro][7]=asegurado;
                intro=intro+1;
            break;
            case 2:
                for(int i=0;i<10;i++){
                    for(int j=0;j<10;j++){
                        if(registros[i][j]!=""){
                            cout<<registros[i][j]<<", ";
                        }
                    }
                    if(registros[i][0]!=""){
                    cout<<"\n";
                    }
                }
            break;
             case 3:
               num=0;
              todos=0;
                for(int i=0;i<10;i++){
 
                    if(registros[i][1]!=""){
 
                        int edades= stoi(registros[i][1]);
                        if(edades<13){
                            num=num+1;
                        }
                       todos=todos+1;
                    }
 
                }
                porcentaje=((float)num/(float)todos)*100;
                cout<<"El porcentaje es: "<<porcentaje<<"%\n";
 
            break;
            case 4:
              num=0;
              todos=0;
                for(int i=0;i<10;i++){
 
                    if(registros[i][2]!=""){
 
                        if(registros[i][2]=="mujer"&& registros[i][2]=="Mujer"){
                            num=num+1;
                        }
                       todos=todos+1;
                    }
 
                }
                porcentaje=((float)num/(float)todos)*100;
                cout<<"El porcentaje es: "<<porcentaje<<"%\n";
 
            break;
            case 5:
 
                cout<<"Introduce el nombre:\n";
                cin>>nom;
                for(int i=0;i<10;i++){
                    if(nom==registros[i][0]){
                        cout<<"Calle: "<<registros[i][3]<<"Numero: "<<registros[i][4]<<"Ciudad: "<<registros[i][5]<<"\n";
                    }
                }
            break;
 
            case 6:
               int nume=0;
                for(int i=0;i<10;i++){
                    if(registros[i][7] =="si"&& asegurado=="Si" && asegurado=="SI"){
                        nume=nume+1;
                    }
                }
                cout<<"El numero de asegurados es: "<<nume<<"\n";
            break;
        }
 
 
    }while(opcion!=7);
    system("pause");
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 1.440
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Arreglo de Registros

Publicado por dario (718 intervenciones) el 11/09/2022 06:04:34
Otra forma de hacerlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <iostream>
#include <vector>
 
using namespace std;
 
struct Pacientes {
    string nombre;
    int edad;
    char sexo;
    string domicilio; //Calle, Numero, Ciudad
    int telefono;
    char asegurado;
};
 
int main() {
    vector <Pacientes> pac;
 
    //variables auxiliares
    string auxNombre;
    int auxEdad;
    char auxSexo;
    string auxDomicilio;
    int auxTelefono;
    char auxAsegurado;
 
    //variables del programa
    char opc;
 
    do {
        cout << "Nombre del paciente: ";
        getline(cin,auxNombre);
        cout << "Edad del paciente: ";
        cin >> auxEdad;
        cout << "Genero (M/F): ";
        cin >> auxSexo; cin.ignore();
        cout << "Domicilio (Calle/Numero/Ciudad): ";
        getline(cin,auxDomicilio);
        cout << "Numero de telefono: ";
        cin >> auxTelefono;
        cout << "Paciente Asegurado [s/n]: ";
        cin >> auxAsegurado;
        pac.push_back(Pacientes{auxNombre,auxEdad,auxSexo,auxDomicilio,auxTelefono,auxAsegurado});
        cout << "Desea ingresar otro paciente [s/n]: ";
        cin >> opc;
        cin.ignore();
 
    } while (opc != 'n');
 
    //Mostrar lista de pacientes
    cout << "\nListado de Pacientes Hospitalizados\n";
    for (auto n : pac) {
        cout << n.nombre;
        cout << endl;
    }
 
    //PORCENTAJE DE PACIENTES HOSPITALIZADOS QUE SON menores de 13 años
    int total = pac.size();
    int t = 0;
    float porcent;
 
    for (auto p : pac) {
        if (p.edad < 13)
            t++;
    }
    porcent = t * 100.0 / total;
    cout << "\nPorcentaje de hospitalizados menores de 13 años: " << porcent << "%" << endl;
 
    //Porcentaje de mujeres hospitalizadas
    int cm = 0; //contador de mujeres
 
    for (auto genero : pac) {
        if (genero.sexo == 'F')
            cm++;
    }
    porcent = cm * 100 / total;
    cout << "\nPorcentaje de mujeres hospitalizadas: " << porcent << "%" << endl;
 
    //DADO EL NOMBRE DE UN PACIENTE, LISTE LOS DATOS RELACIONADOS A SU DIRECCIÓN
    string nombre;
 
    cout << "\nIngrese nombre: ";
    getline(cin,nombre);
 
    for (auto nomb : pac) {
 
        if (nombre == nomb.nombre) {
            cout << "Direccion: " << nomb.domicilio;
            cout << endl;
        }
 
    }
 
    //Pacientes con seguro medico
    int seg = 0;
 
    for (auto seguro : pac) {
        if (seguro.asegurado == 's')
            seg++;
    }
    cout << "\nCantidad de pacientes con seguro medico: " << seg << endl;
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar