CONST_SEG_SOCIAL = 0.0665
# Definición de la función de deducción
def deduccion(sueldo_bruto)
sueldo_bruto * CONST_SEG_SOCIAL
end
# Variables iniciales
overtime = 0
repetir = 1
limite_horas = 50
while repetir == 1 do
begin
puts "Ingrese las horas trabajadas: "
horas_trab = gets.to_i.abs
if horas_trab < 1
puts "Por favor, ingrese horas mayor a 0."
elsif horas_trab >= limite_horas
puts "Favor de ingresar horas mayores a 0 y menores a #{limite_horas}"
end
end while horas_trab < 1 || horas_trab >= limite_horas # Validación de horas trabajadas
begin
puts "Ingrese el sueldo por hora: "
sueldo_hora = gets.to_f.abs
if sueldo_hora < 1
puts "Por favor, ingrese un sueldo por hora mayor a 0."
end
end while sueldo_hora < 1 # Validación de sueldo por hora
# Calcular horas extra
if horas_trab > 40
overtime = (horas_trab - 40) * 2 * sueldo_hora
else
overtime = 0
end
# Calcular sueldo bruto
sueldo_bruto = (horas_trab * sueldo_hora) + overtime
# Llamada a la función deducción
desc_seg_soc = deduccion(sueldo_bruto)
# Calcular sueldo neto
sueldo_neto = sueldo_bruto - desc_seg_soc
puts "Las horas trabajadas son: #{horas_trab} horas con un overtime de #{overtime} horas, un descuento de seguro social de #{desc_seg_soc.round(2)}, un sueldo bruto de #{sueldo_bruto.round(2)}, y un sueldo neto de #{sueldo_neto.round(2)}."
begin
puts "¿Desea ingresar otra persona? 1 = sí, 2 = no: "
repetir = gets.to_i
if repetir != 1 && repetir != 2
puts "Por favor, ingresar 1 o 2."
end
end while repetir != 1 && repetir != 2 # Validación de repetir
end