Parcours
/
C++
C++
/
Exercices
/
Achat de véhicule
Achat de véhicule

Achat de véhicule

Exercice d'apprentissage

Introduction

Comparaisons

En C++, on peut comparer des valeurs à l'aide des opérateurs de comparaison.

Comparaison Opérateur
égal à ==
différent de !=
inférieur à <
inférieur ou égal à <=
supérieur à >
supérieur ou égal à >=

Le résultat de ces comparaisons est toujours une valeur booléenne :

int a{3};

bool eq1 = a != 4; // true

bool eq2 = a > 5;  // false

Les opérateurs == et != vérifient respectivement si une valeur est égale à une autre ou non. Voici quelques exemples courants :

bool eq3 = 2 == 3; // false, integer comparison

bool eq4 = 2.1 != 2.2; // true, float comparison

bool eq5 = "hello" == "hello"; // true, string comparison

Les autres opérateurs permettent de vérifier si une valeur est supérieure à (>), supérieure ou égale à (>=), inférieure à (<) ou inférieure ou égale à (<=) une autre valeur. Ce type de comparaison est disponible pour les nombres et les strings. Lorsque l'on compare des strings, c'est l'ordre dictionnaire (aussi appelé ordre lexicographique) qui est utilisé.

bool eq6 = 2 > 3; // false, integer comparison

bool eq7 = 1.2 < 1.3; // true, float comparison

bool eq8 = "Hello" < "World"; // true, string comparison

Instructions if

Les conditions en C++ sont similaires à celles d'autres langages. Le type sous-jacent de toute opération conditionnelle est le type bool, qui peut avoir la valeur true ou false. Les conditions sont souvent utilisées comme mécanismes de contrôle de flux pour vérifier différentes situations.

On peut utiliser une instruction if, qui exécute son code si la condition sous-jacente est true, comme ceci :

std::string value{"val"};

if (value == "val") {
    return "was val";
}

Dans les cas où il y a plusieurs possibilités, on peut enchaîner plusieurs instructions if à l'aide des instructions else if et else.

int number{33};

if (number > 0) {
   return "positive";
} else if (number < 0) {
    return "negative";
} else {
   return "zero";
}

Depuis C++17, les instructions if peuvent aussi inclure une courte instruction d'initialisation, qui permet d'initialiser une ou plusieurs variables pour l'instruction if. Par exemple :

int num{7};
if (int v{2 * num}; v > 10) {
    return v;
} else {
    return num;
}
// => 14

Remarque : les variables créées dans l'initialisation ne sont pas accessibles après la fin de l'instruction if.

Instructions

Dans cet exercice, tu vas écrire du code pour t'aider à te préparer à acheter un véhicule.

Tu as trois tâches : une pour déterminer si tu as besoin d'un permis, une pour t'aider à choisir entre deux véhicules, et une pour estimer le prix acceptable d'un véhicule d'occasion.

1. Détermine si tu auras besoin d'un permis de conduire

Certains types de véhicules nécessitent un permis de conduire pour être conduits. Suppose que seuls les types "car" et "truck" nécessitent un permis ; tout le reste peut être conduit sans permis.

Implémente la fonction needs_license(kind) qui prend le type de véhicule sous forme de string et renvoie un booléen indiquant si tu as besoin d'un permis pour ce type de véhicule.

needs_license("car")
// => true

needs_license("bike")
// => false

needs_license("truck")
// => true

2. Choisis entre deux véhicules potentiels à acheter

Tu évalues les véhicules disponibles. Tu réussis à réduire ton choix à deux options, mais tu as besoin d'aide pour prendre la décision finale. Pour cela, implémente la fonction choose_vehicle(option1, option2) qui prend deux véhicules en arguments et renvoie une décision qui inclut l'option qui vient en premier dans l'ordre lexicographique.

choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."

choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."

La string renvoyée doit suivre le modèle "<CHOSEN_VEHICLE> is clearly the better choice.", où <CHOSEN_VEHICLE> est l'option choisie parmi les arguments passés.

3. Calcule une estimation du prix d'un véhicule d'occasion

Maintenant que tu as pris ta décision, tu veux t'assurer d'obtenir un prix équitable chez le concessionnaire. Comme tu souhaites acheter un véhicule d'occasion, le prix dépend de l'âge du véhicule. Pour une estimation approximative, suppose que si le véhicule a moins de 3 ans, il coûte 80 % de son prix d'origine lorsqu'il était neuf. S'il a au moins 10 ans, il coûte 50 %. Si le véhicule a au moins 3 ans mais moins de 10 ans, il coûte 70 % de son prix d'origine.

Implémente la fonction calculate_resell_price(original_price, age) qui applique cette logique à l'aide de if, else if et else (il existe d'autres façons de faire si tu veux t'entraîner). Elle prend le prix d'origine et l'âge du véhicule en arguments et renvoie le prix estimé chez le concessionnaire.

calculate_resell_price(1000, 1)
// => 800

calculate_resell_price(1000, 5)
// => 700

calculate_resell_price(1000.0, 15)
// => 500

Note : la valeur de retour est de type double.

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

Prêt à commencer Achat de véhicule ?

Inscris-toi sur Exercism pour apprendre et maîtriser C++ avec 19 concepts100 exercices, et un vrai mentorat humain, le tout gratuitement.