const val CONST_SEG_SOCIAL = 0.0665
fun main() {
var repetir = 1
val limiteHoras = 50
while (repetir == 1) {
var horasTrab: Int
do {
print("Ingrese las horas trabajadas: ")
horasTrab = readLine()?.toIntOrNull()?.let { kotlin.math.abs(it) } ?: -1
if (horasTrab < 1) {
println("Por favor, ingrese horas mayor a 0.")
} else if (horasTrab >= limiteHoras) {
println("Favor de ingresar horas mayores a 0 y menores a $limiteHoras")
}
} while (horasTrab < 1 || horasTrab >= limiteHoras)
var sueldoHora: Double
do {
print("Ingrese el sueldo por hora: ")
sueldoHora = readLine()?.toDoubleOrNull()?.let { kotlin.math.abs(it) } ?: -1.0
if (sueldoHora < 1) {
println("Por favor, ingrese un sueldo por hora mayor a 0.")
}
} while (sueldoHora < 1)
// Calcular horas extra
val overtime = if (horasTrab > 40) {
(horasTrab - 40) * 2 * sueldoHora
} else {
0.0
}
// Calcular sueldo bruto
val sueldoBruto = (horasTrab * sueldoHora) + overtime
// Llamada a la función deducción
val descSegSoc = deduccion(sueldoBruto)
// Calcular sueldo neto
val sueldoNeto = sueldoBruto - descSegSoc
println("Las horas trabajadas son: $horasTrab horas con un overtime de ${"%.2f".format(overtime)}, un descuento de seguro social de ${"%.2f".format(descSegSoc)}, un sueldo bruto de ${"%.2f".format(sueldoBruto)} y un sueldo neto de ${"%.2f".format(sueldoNeto)}.")
do {
print("¿Desea ingresar otra persona? 1 = sí, 2 = no: ")
repetir = readLine()?.toIntOrNull() ?: -1
if (repetir != 1 && repetir != 2) {
println("Por favor, ingresar 1 o 2.")
}
} while (repetir != 1 && repetir != 2)
}
}
// Función para calcular la deducción del seguro social
fun deduccion(sueldoBruto: Double): Double {
return sueldoBruto * CONST_SEG_SOCIAL
}