0% encontró este documento útil (0 votos)
4 vistas9 páginas

Clase Persona en C++: IMC y Edad

El documento presenta un programa en C++ que define una clase 'Persona' y sus subclases 'Empleado' y 'Estudiante'. Cada clase incluye atributos como nombre, edad, sexo, peso y altura, así como métodos para calcular el IMC y determinar la mayoría de edad. El programa permite la entrada de datos de varias personas y muestra información sobre su estado de salud y edad.

Cargado por

juancastillante
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas9 páginas

Clase Persona en C++: IMC y Edad

El documento presenta un programa en C++ que define una clase 'Persona' y sus subclases 'Empleado' y 'Estudiante'. Cada clase incluye atributos como nombre, edad, sexo, peso y altura, así como métodos para calcular el IMC y determinar la mayoría de edad. El programa permite la entrada de datos de varias personas y muestra información sobre su estado de salud y edad.

Cargado por

juancastillante
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

#include <iostream>

#include <string>

#include <cstdlib>

#include <ctime>

#include <cmath>

using namespace std;

class Persona {

private:

string nombre;

int edad;

string INE;

char sexo; // 'H' o 'M'

double peso;

double altura;

public:

static const int BAJO_PESO = -1;

static const int PESO_IDEAL = 0;

static const int SOBREPESO = 1;

Persona() {

nombre = "";

edad = 0;

sexo = 'H';

peso = 0.0;

altura = 0.0;

INE = generaINE();

}
Persona(string nombre, int edad, char sexo) {

this->nombre = nombre;

this->edad = edad;

this->sexo = comprobarSexo(sexo);

this->peso = 0.0;

this->altura = 0.0;

this->INE = generaINE();

Persona(string nombre, int edad, char sexo, double peso, double altura) {

this->nombre = nombre;

this->edad = edad;

this->sexo = comprobarSexo(sexo);

this->peso = peso;

this->altura = altura;

this->INE = generaINE();

int calcularIMC() const {

if (altura <= 0) return 0;

double imc = peso / (altura * altura);

if (imc < 20) return BAJO_PESO;

else if (imc <= 25) return PESO_IDEAL;

else return SOBREPESO;

bool esMayorDeEdad() const {

return edad >= 18;


}

char comprobarSexo(char sexo) const {

if (sexo == 'H' || sexo == 'M') return sexo;

return 'H';

string generaINE() const {

int numero = rand() % 90000000 + 10000000; // 8 cifras

char letra = 'A' + (numero % 26);

return to_string(numero) + letra;

void setNombre(string nombre) { this->nombre = nombre; }

void setEdad(int edad) { this->edad = edad; }

void setSexo(char sexo) { this->sexo = comprobarSexo(sexo); }

void setPeso(double peso) { this->peso = peso; }

void setAltura(double altura) { this->altura = altura; }

string getNombre() const { return nombre; }

int getEdad() const { return edad; }

string getINE() const { return INE; }

char getSexo() const { return sexo; }

double getPeso() const { return peso; }

double getAltura() const { return altura; }

virtual string toString() const {

string texto = "Persona [Nombre=" + nombre +

", Edad=" + to_string(edad) +


", INE=" + INE +

", Sexo=" + string(1, sexo) +

", Peso=" + to_string(peso) +

" kg, Altura=" + to_string(altura) + " m]";

return texto;

};

class Empleado : public Persona {

private:

string cargo;

string departamento;

int horasTrabajadas;

double pagoPorHora;

public:

Empleado() : Persona() {

cargo = "";

departamento = "";

horasTrabajadas = 0;

pagoPorHora = 0.0;

Empleado(string nombre, int edad, char sexo, double peso, double altura,

string cargo, string departamento, int horas, double pago)

: Persona(nombre, edad, sexo, peso, altura) {

this->cargo = cargo;

this->departamento = departamento;

this->horasTrabajadas = horas;
this->pagoPorHora = pago;

double calcularSueldo() const {

return horasTrabajadas * pagoPorHora;

string toString() const override {

string texto = Persona::toString() + "\nEmpleado [Cargo=" + cargo +

", Departamento=" + departamento +

", Horas trabajadas=" + to_string(horasTrabajadas) +

", Pago por hora=" + to_string(pagoPorHora) +

", Sueldo=" + to_string(calcularSueldo()) + "]";

return texto;

};

class Estudiante : public Persona {

private:

string colegio;

int semestre;

public:

Estudiante() : Persona() {

colegio = "";

semestre = 0;

Estudiante(string nombre, int edad, char sexo, double peso, double altura,
string colegio, int semestre)

: Persona(nombre, edad, sexo, peso, altura) {

this->colegio = colegio;

this->semestre = semestre;

string toString() const override {

string texto = Persona::toString() +

"\nEstudiante [Colegio=" + colegio +

", Semestre=" + to_string(semestre) + "]";

return texto;

};

int main() {

srand(time(0));

string nombre;

int edad;

char sexo;

double peso, altura;

cout << "Ingrese los datos de la persona:\n";

cout << "Nombre: ";

getline(cin, nombre);

cout << "Edad: ";

cin >> edad;

cout << "Sexo (H/M): ";

cin >> sexo;


cout << "Peso (kg): ";

cin >> peso;

cout << "Altura (m): ";

cin >> altura;

Persona p1(nombre, edad, sexo, peso, altura);

Persona p2("Carlos", 30, 'H', 80, 1.75);

Persona p3;

[Link]("Lucia");

[Link](22);

[Link]('M');

[Link](55);

[Link](1.65);

string nombreE, cargo, dep;

int edadE, horas;

char sexoE;

double pesoE, alturaE, pago;

cout << "\nIngrese los datos del empleado:\n";

[Link]();

cout << "Nombre: ";

getline(cin, nombreE);

cout << "Edad: ";

cin >> edadE;

cout << "Sexo (H/M): ";

cin >> sexoE;

cout << "Peso (kg): ";

cin >> pesoE;


cout << "Altura (m): ";

cin >> alturaE;

[Link]();

cout << "Cargo: ";

getline(cin, cargo);

cout << "Departamento: ";

getline(cin, dep);

cout << "Horas trabajadas: ";

cin >> horas;

cout << "Pago por hora: ";

cin >> pago;

Empleado emp(nombreE, edadE, sexoE, pesoE, alturaE, cargo, dep, horas, pago);

Estudiante est("Andrea", 19, 'M', 48, 1.60, "Preparatoria Central", 3);

Persona* personas[5] = { &p1, &p2, &p3, &emp, &est };

for (int i = 0; i < 5; i++) {

cout << "\n-------------------------\n";

cout << personas[i]->toString() << endl;

int imc = personas[i]->calcularIMC();

if (dynamic_cast<Estudiante*>(personas[i])) {

if (imc == Persona::SOBREPESO)

cout << "El estudiante debe iniciar un programa de entrenamiento.\n";

else if (imc == Persona::BAJO_PESO)

cout << "El estudiante debe asistir con el nutriólogo.\n";


else

cout << "El estudiante tiene peso ideal.\n";

else if (dynamic_cast<Empleado*>(personas[i])) {

if (imc != Persona::PESO_IDEAL)

cout << "El empleado debe asistir a pláticas de salud.\n";

else

cout << "El empleado tiene peso ideal.\n";

else {

if (imc == Persona::SOBREPESO)

cout << "Tiene sobrepeso.\n";

else if (imc == Persona::BAJO_PESO)

cout << "Está por debajo del peso ideal.\n";

else

cout << "Tiene peso ideal.\n";

if (personas[i]->esMayorDeEdad())

cout << "Es mayor de edad.\n";

else

cout << "Es menor de edad.\n";

return 0;

También podría gustarte