Parcours
/
Elixir
Elixir
/
Exercices
/
Tarifs d'un freelance
Tarifs d'un freelance

Tarifs d'un freelance

Exercice d'apprentissage

Introduction

Les nombres entiers

Il existe deux types de nombres en Elixir : les entiers et les nombres décimaux.

Les entiers sont des nombres sans partie décimale.

integer = 3
# => 3

Les nombres décimaux

Les nombres décimaux comportent un ou plusieurs chiffres après le séparateur décimal. Ils utilisent le format à virgule flottante à double précision sur 64 bits.

float = 3.45
# => 3.45

Travaille avec les nombres

Dans les modules Integer et Float, on trouve des fonctions utiles pour manipuler ces types. Les opérateurs arithmétiques de base sont définis dans le module Kernel.

Conversion

Les entiers et les nombres décimaux peuvent être mélangés dans une même expression arithmétique. Si un nombre décimal intervient dans une expression, le résultat sera lui aussi un nombre décimal.

2 * 3
# => 6

2 * 3.0
# => 6.0

En revanche, dans une division, le résultat est toujours un nombre décimal, même si seuls des entiers sont utilisés.

6 / 2
# => 3.0

Pour convertir un nombre décimal en entier, on peut supprimer la partie décimale avec trunc/1.

Instructions

Dans cet exercice, on va écrire du code pour aider un freelance à communiquer avec un chef de projet. Ton objectif est de fournir quelques outils pour calculer rapidement des tarifs journaliers et mensuels, avec éventuellement une réduction donnée.

On commence par établir quelques règles entre le freelance et le chef de projet :

  • Le tarif journalier correspond à 8 fois le tarif horaire.
  • Un mois compte 22 jours facturables.

Il arrive que le freelance propose d'appliquer une réduction sur son tarif journalier (par exemple pour ses clients les plus fidèles ou pour des clients à but non lucratif).

Les réductions sont modélisées par des nombres décimaux représentant des pourcentages, par exemple 25.0 (25 %).

1. Calcule le tarif journalier à partir d'un tarif horaire

Implémente une fonction appelée daily_rate qui calcule le tarif journalier à partir d'un tarif horaire passé en paramètre. Le contrat définit qu'un jour compte 8 heures facturables.

FreelancerRates.daily_rate(60)
# => 480.0

Le tarif journalier renvoyé doit être un nombre décimal.

2. Calcule un prix après réduction

Implémente une fonction apply_discount qui calcule le prix après une réduction.

FreelancerRates.apply_discount(150, 10)
# => 135.0

La valeur renvoyée doit toujours être un nombre décimal, sans aucun arrondi.

3. Calcule le tarif mensuel à partir d'un tarif horaire et d'une réduction

Implémente une fonction monthly_rate qui calcule le tarif mensuel après réduction. Elle prend deux paramètres, un tarif horaire et la réduction en pourcentage.

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

Le tarif mensuel renvoyé doit être arrondi à l'entier supérieur (on prend l'entier du dessus).

4. Calcule le nombre de jours travaillés complets à partir d'un budget, d'un tarif horaire et d'une réduction

Implémente une fonction days_in_budget qui prend un budget, un tarif horaire et une réduction, et qui calcule combien de jours de travail complets cela couvre.

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

Le nombre de jours renvoyé doit être arrondi à l'inférieur (arrondi par défaut) à une décimale.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Elixir Exercism

Prêt à commencer Tarifs d'un freelance ?

Inscris-toi sur Exercism pour apprendre et maîtriser Elixir avec 58 concepts168 exercices, et un vrai mentorat humain, le tout gratuitement.