I must carry out a program, which is a clinic which has a list of the Pregnant class, which is a base class from which pregnant women are derived. Pregnant women, pregnant women, pregnant women, mothers35 and pregnant women, high blood. I must implement six functions in the Classroom:
- Number of pregnant women who are considered at risk.
- Obtain a list of diabetic pregnant women.
- Of the total number of pregnant women at risk, how many are over 35 years old.
- Given the name of a high blood pressure pregnant woman know the value of blood pressure minimum reached.
- Obtain the medical history number of the diabetic pregnant woman with the highest PTG
- Print the value of the extra check carried out of all pregnant women of the diabetic type and of high blood pressure.
I must do it using dynamic_cast, this is what I have:
//Imprimir cantidad de embarazadas en riesgo
void EmbarazadasRiesgo() {
list<Embarazadas*>::iterator it = embarazadas.begin();
int i = 0;
while (it != embarazadas.end()) {
if ((*it)->riesgo() == true) {
it++;
i++;
}
}
cout << "Cantidad de embarazadas en riesgo es de: " << i << endl;
//Imprimir listado de embarazadas diabeticas
void PrintEmbarazadasDiabeticas() {
list<Embarazadas*>::iterator it = embarazadas.begin();
while (it != embarazadas.end()) {
if (dynamic_cast<EmbarazadasDiabeticas*>(*it) != 0) {
cout<<"Nombre completo: "<<dynamic_cast<EmbarazadasDiabeticas*>(*it)->getNombre();
cout<<" "<<dynamic_cast<EmbarazadasDiabeticas*>(*it)->getApellido()<<". ";
cout<<" No. de Historia Clinica: "<<dynamic_cast<EmbarazadasDiabeticas*>(*it)->getNoHClinica()<<". ";
cout << "PTG: " << dynamic_cast<EmbarazadasDiabeticas*>(*it)->getPTG() << endl;
it++;
}
}
}
//Imprimir de las embarazas en riesgo, la cantidad que son mayores a 35
void RiegoMas35() {
list<Embarazadas*>::iterator it = embarazadas.begin();
int i = 0;
while (it != embarazadas.end()) {
if (dynamic_cast<EmbarazadasMas35*>(*it) != 0) {
while (dynamic_cast<EmbarazadasMas35*>(*it)->riesgo() == true) {
it++;
i++;
}
}
}
cout << "De las embarazadas en riesgo, " << i << "son Embarazadas mayores de 35 anios." << endl;
}
//Dado el nombre de una embarazada con PAA, imprimir el valor minimo alcanzado
void EmbPAAValorMinimo(string pNombre) {
list<Embarazadas*>::iterator it = embarazadas.begin();
while (it != embarazadas.end()) {
if (dynamic_cast<EmbarazadasPArterialAlta*>(*it) != 0) {
if (pNombre == dynamic_cast<EmbarazadasPArterialAlta*>(*it)->getNombre()) {
cout << "Valor minimo alcanzado por " << pNombre << ": " << dynamic_cast<EmbarazadasPArterialAlta*>(*it)->valorMinimo() << endl;
it++;
}
}
}
}
//Obtener el numero de historia clinica de embarazada diabetica con mayor PTG
void EmbDiabMayorPTG() {
list<Embarazadas*>::iterator it = embarazadas.begin();
float mayor=0;
while (it != embarazadas.end()) {
if (dynamic_cast<EmbarazadasDiabeticas*>(*it) != 0) {
if (dynamic_cast<EmbarazadasDiabeticas*>(*it)->getPTG() < mayor) {
mayor = dynamic_cast<EmbarazadasDiabeticas*>(*it)->getPTG();
it++;
}
}
}
if (dynamic_cast<EmbarazadasDiabeticas*>(*it)->getPTG() == mayor) {
dynamic_cast<EmbarazadasDiabeticas*>(*it)->getNoHClinica();
}
}
//Imprimir el valor del chequeo extra realizado de todas las embarazadas del tipo diabetica y de presion arterial alta
void printChequeoExtra() {
list<Embarazadas*>::iterator it = embarazadas.begin();
while (it != embarazadas.end()) {
if (dynamic_cast<EmbarazadasDiabeticas*>(*it) != 0) {
cout << dynamic_cast<EmbarazadasDiabeticas*>(*it)->getNombre() << ' ' << dynamic_cast<EmbarazadasDiabeticas*>(*it)->getApellido() << "Valor de glucosa: " << dynamic_cast<EmbarazadasDiabeticas*>(*it)->ExamenGlucosa() << "mg/dl" << endl;
}
if (dynamic_cast<EmbarazadasPArterialAlta*>(*it) != 0) {
cout << dynamic_cast<EmbarazadasPArterialAlta*>(*it)->getNombre() << ' ' << dynamic_cast<EmbarazadasPArterialAlta*>(*it)->getApellido() << "Pulsaciones: " << dynamic_cast<EmbarazadasPArterialAlta*>(*it)->ExamenPulsaciones() << "bpm" << endl;
}
it++;
}
}
The problem is that when executing them in the main, only the first, the second and the last work. The functions to print the total pregnant at risk that are greater than 35, which gives me the minimum blood pressure value given a name and gives me the number of pregnant diabetic history with higher PTG do not work. Could you help me? It's very important. Gr