Tu principal error es no utilizar nombres mas descriptivos para las variables. Analiza este código y dime si no esta mas claro de esta forma
Otra forma de escribir este código es de la siguiente forma
#include <iostream>
#include <iomanip>
using namespace std;
// Define el numero maximo de horas semanales
#define MAX_HORAS_SEMANALES 40
void imprimir_cabecera() {
cout << setw(50) << "*********************************" << endl;
cout << setw(50) << "* Salario Por Horas Trabajadas *" << endl;
cout << setw(50) << "*********************************" << endl;
cout << setw(50) << " "<<endl;
}
int entrada_usuario (char* cadena) {
int valor_a_devolver;
cout << cadena;
cin >> valor_a_devolver;
return (valor_a_devolver);
}
void imprimir (char* cadena, int valor) {
cout << cadena << valor << endl;
}
int calcular_sueldo_base (int horas, int coste) {
// Si el numero de horas trabajadas es mayor que el maximo de horas semanales
// el sueldo base sera el maximo de horas semanales por el coste por hora
if (horas > MAX_HORAS_SEMANALES)
return (MAX_HORAS_SEMANALES * coste);
// Si el numero de horas trabajadas es menor que el maximo de horas semanales
// el sueldo base sera el numero de horas trabajadas por el coste por hora
else
return (horas * coste);
}
int calcular_horas_extras (int horas) {
// Si el numero de horas trabajadas es mayor que el maximo de horas semanales
// el numero de horas extras sera la diferencia entre ambos
if (horas > MAX_HORAS_SEMANALES)
return (horas - MAX_HORAS_SEMANALES);
// si el numero de horas trabajadas es menor que el maximo de horas semanales
// el numero de horas extras sera 0
else
return (0);
}
int main ()
{
// Declaramos las variables a utilizar con nombres significativos
int horas_trabajadas, coste_hora, horas_extras, sueldo_neto,sueldo_base, incremento_horas_extras, coste_hora_extra;
// Imprimimos la cabecera
imprimir_cabecera();
// Pedimos al usuario que introduzca las horas trabajadas
horas_trabajadas = entrada_usuario ("Ingrese horas trabajadas: ");
// Pedimos al usuario que introduzca el coste por hora
coste_hora = entrada_usuario ("Ingrese el coste por hora: ");
// Calculamos el sueldo base
sueldo_base = calcular_sueldo_base (horas_trabajadas, coste_hora);
// Calculamos el numero de horas extras
horas_extras = calcular_horas_extras (horas_trabajadas);
// Calculamos el incremento por horas extras
incremento_horas_extras = horas_extras * coste_hora * 3;
// Calculamos el sueldo neto
sueldo_neto = sueldo_base + incremento_horas_extras;
// Imprimimos las horas extras
imprimir ("Las horas extras son: ", horas_extras);
// Imprimimos el sueldo base
imprimir ("El sueldo base es: ", sueldo_base);
// Imprimimos el sueldo neto
imprimir ("El sueldo neto es: ", sueldo_neto);
// Salimos del programa
return 0;
}