TIA 2. Taller Final: elaboración de un algoritmo en el lenguaje de programación C++.
Una empresa tiene un número variable de empleados y de cada uno de ellos posee
la siguiente información:
Código,Nombres,Número de hijos,Salario por hora,Número de horas trabajadas al mes,La retención por cada empleado se determina así:
Para salarios menores de $300.000: si el número de hijos es mayor de 6 no hay retención; si el número de hijos es menor o igual a 6, se le retiene un porcentaje igual a 6 menos el número de hijos dividido por 2.
Para salarios iguales o mayores a $300.000: si el número de hijos es menor de 3, se le retiene un 3%; si el número de hijos es mayor o igual a 3 se le retiene un porcentaje igual a 10 dividido por el número de hijos.El subsidio por cada hijo es de $1.200.
Elaborar un algoritmo que muestre: código, nombres, Salario devengado, retención, subsidio y total a pagar a cada uno de los empleados, Nombre del empleado con más hijos, en caso de que varios empleados tengan el mismo número de hijos asignarlo al último de ellos que se halla ingresado de ultimo al sistema. El nombre del empleado con menor salario devengado y el total del costo de la nomina de la empresa.
#include <iostream>
using namespace std;
//funcion para pedir los datos del trabajador
void pedirdatosdelempleado(int &codigo_del_empleado,string &nombre_del_empleado,int &numero_de_hijos,double &salario_por_hora,int &horas_trabajadas){
cout<<"Ingrese el CODIGO del empleado :"<<endl;
cin>>codigo_del_empleado;
cout<<"Ingrese el NOMBRE del empleado SIN ESPACIOS:"<<endl;
cin>>nombre_del_empleado;
cout<<"Ingrese el NUNMERO DE HIJOS del empleado :"<<endl;
cin>>numero_de_hijos;
cout<<"Ingrese el SALARIO POR HORAS del empleado :"<<endl;
cin>>salario_por_hora;
cout<<"Ingrese las HORAS TRABAJADAS del empleado :"<<endl;
cin>>horas_trabajadas;
}
//funcion para calcular el salario
double calcularsalario(double salario_por_hora,int horas_trabajadas){
return salario_por_hora*horas_trabajadas;
}
//funcion para calcular la retencion
double calcularretencion(double salariodevengado, int numero_de_hijos) {
double retencion;
if (salariodevengado < 300000) {//menores
if (numero_de_hijos > 6) {
retencion = 0;
} else {
retencion = salariodevengado * ((6 - numero_de_hijos) / 2.0) / 100.0;
}
} else {
if (numero_de_hijos < 3) {
retencion = salariodevengado * 0.03; // Retención del 3%
} else {
retencion = salariodevengado * (10.0 / numero_de_hijos) / 100.0;
}
}
return retencion;
}
//funcion para calcular el subsidio
float calcularsubsidio(int numero_de_hijos) {
return numero_de_hijos * 1200; // Subsidio de $1200 por hijo
}
//funcion para calcular el total a pagar al el empleado
float totalapagarempelado(double salariodevengado, double retencion, float subsidio){
return salariodevengado-retencion+subsidio;
}
// Función para actualizar el empleado con el mayor número de hijos
void actualizarMayorHijos(string &nombreMaxHijos, int &maxHijos, string nombre_del_empleado, int numero_de_hijos) {
if (numero_de_hijos >= maxHijos) {
maxHijos = numero_de_hijos;
nombreMaxHijos = nombre_del_empleado;
}
}
// Función para actualizar el empleado con el menor salario devengado
void actualizarMenorSalario(string &nombreMenorSalario, double &salarioMenor, string nombre_del_empleado, double salariodevengado) {
if (salariodevengado < salarioMenor) {
salarioMenor = salariodevengado;
nombreMenorSalario = nombre_del_empleado;
}
}
int main() {//funcion principal
char continuar;
double totalnomina = 0.0;
string nombreMayorHijos;
string nombreMenorSalario;
double salarioMenor = 1e9;
int maxHijos=-1;
string nombreMaxHijos;
do {
int codigo_del_empleado;
string nombre_del_empleado;
int numero_de_hijos;
double salario_por_hora;
int horas_trabajadas;
pedirdatosdelempleado(codigo_del_empleado,nombre_del_empleado,numero_de_hijos,salario_por_hora,horas_trabajadas);
double salariodevengado=calcularsalario(salario_por_hora,horas_trabajadas);
double retencion = calcularretencion(salariodevengado, numero_de_hijos);
float subsidio=calcularsubsidio(numero_de_hijos);
float totalapagar=totalapagarempelado(salariodevengado,retencion,subsidio);
totalnomina+=totalapagar;
actualizarMayorHijos(nombreMaxHijos, maxHijos, nombre_del_empleado, numero_de_hijos);
actualizarMenorSalario(nombreMenorSalario, salarioMenor, nombre_del_empleado, salariodevengado);
cout<<"Codigo del empleado : "<<codigo_del_empleado<<endl;
cout<<"Empleado : "<<nombre_del_empleado<<endl;
cout<<"El salario DEVENGADO es de :"<<salariodevengado<<endl;
cout << "La RETENCION es: " << retencion << endl;
cout<<"El SUBSIDIO es de : "<<subsidio<<endl;
cout<<"El total a pagar al empleado es de : "<<totalapagar<<endl;
cout << "Si Desea registrar otro empleado: INGRESE S"<<endl;
cout<<"Si NO desea registar otro empleado INGRESE N"<<endl;
cin >> continuar;
}while (continuar == 's');
cout << "El total de NOMINA a pagar es: " << totalnomina << endl;
cout << "El empleado con la mayor cantidad de hijos es: " << nombreMaxHijos << endl;
cout << "El empleado con el menor salario devengado es: " << nombreMenorSalario << endl;
return 0;
}
Comentarios
Publicar un comentario