Tous les défis
Moyen 0 résolus 0 % de réussite

Paie hebdomadaire

Totaliser le salaire d'une semaine pour les employés salariés, horaires et à commission, chacun payé selon sa propre règle.

Ce que vous allez apprendre

  • Calculer la paie avec une règle par type d'employé
  • Payer les heures au-delà de 40
  • Additionner des montants décimaux avec précision

Problème

Un système de paie considère chaque employé comme un Employee avec une méthode WeeklyPay(), et chaque type d'employé la redéfinit.

Chaque employé s'écrit ainsi :

  • salaried <annual> : gagne annual / 52.
  • hourly <rate> <hours> : gagne rate × hours pour les 40 premières heures et 1.5 × rate pour chaque heure au-delà de 40.
  • commission <base> <rate> <sales> : gagne base + rate × sales.

Implémentez weekly_payroll(employees).

Entrée

employees: Les employés. Les nombres peuvent avoir des décimales.

Sortie

Retournez la paie hebdomadaire totale. Les réponses dans un intervalle de 1e-6 sont acceptées.

Contraintes

0 ≤ nombre d'employés ≤ 10,000

Tous les nombres sont entre 0 et 10^7 ; hours ≤ 100

Exemples

Exemple 1
Entrée :
employees = ["salaried 52000", "hourly 20 45"]

Sortie attendue :
expected = 1950.0
Entrée :
std::vector<std::string> employees = {"salaried 52000", "hourly 20 45"};

Sortie attendue :
double expected = 1950.0;
Entrée :
string[] employees = new string[] {"salaried 52000", "hourly 20 45"};

Sortie attendue :
double expected = 1950.0;

Explication

L'employé salarié gagne 52000 / 52 = 1000. L'employé horaire gagne 20 × 40 + 30 × 5 = 950. Total 1950.

Exemple 2
Entrée :
employees = ["commission 300 0.1 2500"]

Sortie attendue :
expected = 550.0
Entrée :
std::vector<std::string> employees = {"commission 300 0.1 2500"};

Sortie attendue :
double expected = 550.0;
Entrée :
string[] employees = new string[] {"commission 300 0.1 2500"};

Sortie attendue :
double expected = 550.0;

Explication

300 + 0.1 × 2500 = 550.

Comment l'aborder

Essayez d'abord seul, puis ouvrez les indices un par un.

Indice 1

Traitez chaque type d'employé avec sa propre formule.

Indice 2

Le salaire horaire est normal pour les 40 premières heures, puis 1,5 fois le taux.

Indice 3

Gardez les décimales : un salaire annuel divisé par 52 tombe rarement juste.

Complexité attendue

temps O(nombre d'employés), espace supplémentaire O(1)

Références

Ce défi a été adapté pour CodeUtility. Suivez l'énoncé et les contraintes ci-dessus.

Apprenez des autres

Solutions de la communauté

Aucune solution publiée pour l'instant. Résolvez ce défi pour partager la première.