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

CASOS

El documento presenta tres casos de código en C++. El Caso 1 define una clase 'Docente' que calcula su sueldo y bonificaciones basadas en su categoría y estudios. El Caso 2 permite registrar datos de clientes en un archivo, mientras que el Caso 3 define una clase 'deportista' que hereda de 'persona' y calcula el IMC y diagnóstico de salud.

Cargado por

elmergalarga6969
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 DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas9 páginas

CASOS

El documento presenta tres casos de código en C++. El Caso 1 define una clase 'Docente' que calcula su sueldo y bonificaciones basadas en su categoría y estudios. El Caso 2 permite registrar datos de clientes en un archivo, mientras que el Caso 3 define una clase 'deportista' que hereda de 'persona' y calcula el IMC y diagnóstico de salud.

Cargado por

elmergalarga6969
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 DOCX, PDF, TXT o lee en línea desde Scribd

CASO 1:

#include <iostream>

#include <string>

#include <vector>

using namespace std;

class Docente {

private:

string codigo;

string nombres;

string categoria;

string estudios;

int antiguedad;

int horas;

public:

// Constructor

Docente(string cod, string nom, string cat, string est, int ant, int hor)

: codigo(cod), nombres(nom), categoria(cat), estudios(est), antiguedad(ant), horas(hor) {}

// Método para calcular el pago parcial

double calcularPagoParcial() {

if (categoria == "Principal") {

return horas * 50;

} else if (categoria == "Asociado") {

return horas * 40;

} else if (categoria == "Auxiliar") {


return horas * 30;

return 0; // Categoría no válida

// Método para calcular la bonificación

double calcularBonificacion() {

double pago_parcial = calcularPagoParcial();

double porcentaje = 0.0;

if (categoria == "Principal") {

if (estudios == "Doctorado") porcentaje = 0.25;

else if (estudios == "Maestría") porcentaje = 0.20;

else if (estudios == "Ambas") porcentaje = 0.30;

} else if (categoria == "Asociado") {

if (estudios == "Doctorado") porcentaje = 0.18;

else if (estudios == "Maestría") porcentaje = 0.15;

else if (estudios == "Ambas") porcentaje = 0.25;

} else if (categoria == "Auxiliar") {

if (estudios == "Doctorado") porcentaje = 0.15;

else if (estudios == "Maestría") porcentaje = 0.10;

else if (estudios == "Ambas") porcentaje = 0.20;

return pago_parcial * porcentaje;

// Método para calcular el sueldo bruto


double calcularSueldoBruto() {

return calcularPagoParcial() + calcularBonificacion();

// Método para calcular el descuento

double calcularDescuento() {

double sueldo_bruto = calcularSueldoBruto();

if (antiguedad < 7) {

return sueldo_bruto * 0.05;

} else if (antiguedad >= 8) {

return sueldo_bruto * 0.04;

return 0; // Para 7 años no hay descuento

// Método para calcular el sueldo neto

double calcularSueldoNeto() {

return calcularSueldoBruto() - calcularDescuento();

// Método para mostrar información del docente

void mostrarInformacion() {

cout << "\n--- Información del Docente ---" << endl;

cout << "Código: " << codigo << endl;

cout << "Nombres: " << nombres << endl;

cout << "Categoría: " << categoria << endl;

cout << "Estudios: " << estudios << endl;


cout << "Antigüedad: " << antiguedad << " años" << endl;

cout << "Horas: " << horas << endl;

cout << "Pago Parcial: S/" << calcularPagoParcial() << endl;

cout << "Bonificación: S/" << calcularBonificacion() << endl;

cout << "Sueldo Bruto: S/" << calcularSueldoBruto() << endl;

cout << "Descuento: S/" << calcularDescuento() << endl;

cout << "Sueldo Neto: S/" << calcularSueldoNeto() << endl;

};

// Ejemplo de uso

int main() {

// Crear docentes de prueba

Docente docente1("D001", "Juan Perez", "Principal", "Doctorado", 5, 40);

Docente docente2("D002", "Maria Lopez", "Asociado", "Maestría", 8, 35);

Docente docente3("D003", "Carlos Ruiz", "Auxiliar", "Ambas", 7, 30);

// Mostrar información

[Link]();

[Link]();

[Link]();

return 0;

CASO 2:

#include <iostream>

#include <fstream>
#include <string>

using namespace std;

int main() {

ofstream archivo;

int n;

string cuenta, nombre;

double saldo;

// Abrir archivo en modo append (añadir al final)

[Link]("[Link]", ios::app);

if (!archivo.is_open()) {

cerr << "Error al abrir el archivo!" << endl;

return 1;

// Solicitar cantidad de clientes

cout << "Ingrese cantidad de clientes: ";

cin >> n;

[Link](); // Limpiar buffer

// Recopilar datos de cada cliente

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

cout << "\nCliente " << i + 1 << ":\n";

cout << "Numero de cuenta: ";


getline(cin, cuenta);

cout << "Nombre completo: ";

getline(cin, nombre);

cout << "Saldo: ";

cin >> saldo;

[Link](); // Limpiar buffer

// Escribir en el archivo

archivo << cuenta << "|" << nombre << "|" << saldo << "\n";

// Cerrar archivo

[Link]();

cout << "\nDatos guardados exitosamente en [Link]!" << endl;

return 0;

CASO 3:
#include <cstring>

#include <iostream>

using namespace std;

// Asumiendo que la clase persona ya está implementada

class persona {

// ... implementación existente ...

};
class deportista : public persona {

private:

char deporte[50];

float IMC;

public:

deportista(char n[30], char s, float p, float t, char d[50])

: persona(n, s, p, t) {

strncpy(deporte, d, 49);

deporte[49] = '\0'; // Asegurar terminación nula

IMC = 0.0;

void ingresar() {

persona::ingresar(); // Llama al método de la clase base

cout << "Ingrese deporte: ";

[Link](deporte, 50);

void mostrar() {

persona::mostrar(); // Llama al método de la clase base

cout << "Deporte: " << deporte << endl;

cout << "IMC: " << IMC << endl;

cout << "Diagnóstico: " << diagnostico() << endl;

cout << "Apto para boxeo: " << (puedePracticarBoxeo() ? "Sí" : "No") << endl;

}
void calcularIMC() {

float altura_metros = gettalla() / 100.0f; // Convertir cm a m

IMC = getpeso() / (altura_metros * altura_metros);

char* diagnostico() {

calcularIMC(); // Asegura que el IMC esté actualizado

if (IMC < 18) return "bajo peso";

else if (IMC >= 18 && IMC < 25) return "normal";

else if (IMC >= 25 && IMC < 30) return "sobrepeso";

else if (IMC >= 30 && IMC < 35) return "sobrepeso crónico";

else return "obesidad";

bool puedePracticarBoxeo() {

float peso = getpeso();

char sexo = getsexo();

if (sexo == 'F' || sexo == 'f') {

return (peso >= 46 && peso <= 90);

else if (sexo == 'M' || sexo == 'm') {

return (peso >= 54);

return false; // Sexo no reconocido


}

};

También podría gustarte