Intermedio 0 resueltos 0% de aceptación

Nómina semanal

Calcula el total del pago semanal para empleados asalariados, por hora y por comisión, cada uno pagado por su propia regla.

Lo que aprenderás

  • Calcular el pago con una regla por tipo de empleado
  • Pagar horas extra por encima de 40
  • Sumar importes decimales con precisión

Problema

Ver original (inglés)

Un sistema de nómina trata a cada empleado como un Employee con un método WeeklyPay(), y cada tipo de empleado lo sobrescribe.

Cada empleado se escribe como:

  • salaried <annual>: gana annual / 52.
  • hourly <rate> <hours>: gana rate × hours por las primeras 40 horas y 1.5 × rate por cada hora por encima de 40.
  • commission <base> <rate> <sales>: gana base + rate × sales.

Implementa weekly_payroll(employees).

Entrada

employees: Los empleados. Los números pueden tener decimales.

Output

Devuelve el pago semanal total. Se aceptan respuestas dentro de 1e-6.

Restricciones

0 ≤ número de empleados ≤ 10,000

Todos los números están entre 0 y 10^7; hours ≤ 100

Ejemplos

Ejemplo 1
Entrada:
employees = ["salaried 52000", "hourly 20 45"]

Salida esperada:
expected = 1950.0
Entrada:
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};

Salida esperada:
double expected = 1950.0;
Entrada:
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};

Salida esperada:
double expected = 1950.0;

Explicación

El empleado asalariado gana 52000 / 52 = 1000. El empleado por hora gana 20 × 40 + 30 × 5 = 950. Total 1950.

Ejemplo 2
Entrada:
employees = ["commission 300 0.1 2500"]

Salida esperada:
expected = 550.0
Entrada:
std::vector<std::string> employees = {"commission 300 0.1 2500"};

Salida esperada:
double expected = 550.0;
Entrada:
string[] employees = new string[] {"commission 300 0.1 2500"};

Salida esperada:
double expected = 550.0;

Explicación

300 + 0.1 × 2500 = 550.

Cómo abordarlo

Inténtalo primero por tu cuenta y luego abre las pistas una a una.

Pista 1

Trata cada tipo de empleado con su propia fórmula.

Pista 2

El pago por hora es normal las primeras 40 horas y 1,5 veces la tarifa después.

Pista 3

Conserva los decimales: un salario anual entre 52 rara vez da exacto.

Complejidad esperada

tiempo O(número de empleados), espacio extra O(1)

Referencias

Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.

Aprende de otros

Soluciones de la comunidad

Aún no hay soluciones publicadas. Resuelve este reto para compartir la primera.