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
}
};