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
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.
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.
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
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.
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.
Inscris-toi sur Exercism pour apprendre et maîtriser C++ avec 19 concepts100 exercices, et un vrai mentorat humain, le tout gratuitement.