Défi : Instructions If Imbriquées
Une instruction if imbriquée est simplement une instruction if à l'intérieur d'une autre instruction if. Cette structure permet d'évaluer plusieurs conditions, l'une après l'autre, et d'exécuter des blocs de code spécifiques.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
L'instruction if extérieure agit comme un gardien, et selon son évaluation, elle peut ouvrir la porte à une autre instruction if à l'intérieur. Considérons un scénario où l'on souhaite déterminer le salaire d'un employé en fonction de ses performances.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 17; int hours_worked = 37; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // And if the number of hours worked is more than 40 if (hours_worked > 40) { // add an additional 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } } std::cout << current_salary << std::endl; }
Ce code calcule le nouveau salaire d’un employé en fonction du nombre de tâches accomplies et des heures travaillées, avec une augmentation de 20 % si le nombre de tâches dépasse 15 et une augmentation supplémentaire de 20 % si le nombre d’heures travaillées dépasse 40. Comme vous pouvez le constater, le calcul actuel donne 1200. Ce résultat ne peut être obtenu qu’en utilisant des instructions if imbriquées ; voici quelques tentatives pour obtenir la même logique sans les utiliser.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 9; int hours_worked = 41; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } // If the number of hours worked is more than 40 if (hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } std::cout << current_salary << std::endl; }
Au premier abord, cela peut sembler fonctionner de la même manière, mais dans ce cas, le travailleur recevra une augmentation supplémentaire de 20 %, qu'il ait ou non accompli plus de 15 tâches. Exécuter le code et observer la sortie, qui affiche une valeur de 1200, même si cette fois le travailleur n'a pas accompli plus de 15 tâches.
main.cpp
1234567891011121314151617181920212223#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 19; int hours_worked = 39; // If the number of completed tasks is greater than 15 // AND the number of of hours worked is more than 40 if (completed_tasks > 15 && hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; std::cout << current_salary << std::endl; } std::cout << current_salary << std::endl; }
Dans ce cas, il peut sembler que cela devrait fonctionner comme prévu, mais malheureusement, c'est également incorrect, la sortie est 1000. En effet, si le travailleur accomplit plus de 15 tâches mais ne travaille pas plus de 40 heures, il ne recevra rien. Il est donc nécessaire d'utiliser des instructions if imbriquées afin d'obtenir la bonne implémentation.
Les instructions if imbriquées sont particulièrement utiles pour créer des processus de prise de décision et gérer des scénarios complexes dans votre code. En concevant soigneusement la structure de votre code et en maintenant sa lisibilité, vous pouvez exploiter la puissance des instructions if imbriquées afin d'écrire des programmes efficaces et faciles à maintenir.
Remarque
Les instructions
ifimbriquées sont nécessaires dans certains cas mais pas toujours. Dans la troisième section, nous aborderons quand, pourquoi et comment les éviter.
Swipe to start coding
Vous développez un système de billetterie de cinéma. Les prix des billets varient en fonction de l'âge du client et selon qu'il s'agit d'un week-end ou d'un jour de semaine.
- Utilisez des instructions if imbriquées pour déterminer le prix du billet :
- Si le client a moins de 18 ans, facturez :
12.0le week-end8.0en semaine
- Si le client a entre 18 et 60 ans, facturez :
20.0le week-end15.0en semaine
- Si le client a plus de 60 ans, facturez :
16.0le week-end10.0en semaine
- Si le client a moins de 18 ans, facturez :
- Retournez le prix du billet depuis la fonction.
Exemple
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Solution
solution.cpp
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Can you give an example of when nested `if` statements are necessary?
What are some alternatives to using nested `if` statements?
Can you explain how to avoid nested `if` statements in certain scenarios?
Awesome!
Completion rate improved to 7.69
Défi : Instructions If Imbriquées
Glissez pour afficher le menu
Une instruction if imbriquée est simplement une instruction if à l'intérieur d'une autre instruction if. Cette structure permet d'évaluer plusieurs conditions, l'une après l'autre, et d'exécuter des blocs de code spécifiques.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
L'instruction if extérieure agit comme un gardien, et selon son évaluation, elle peut ouvrir la porte à une autre instruction if à l'intérieur. Considérons un scénario où l'on souhaite déterminer le salaire d'un employé en fonction de ses performances.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 17; int hours_worked = 37; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // And if the number of hours worked is more than 40 if (hours_worked > 40) { // add an additional 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } } std::cout << current_salary << std::endl; }
Ce code calcule le nouveau salaire d’un employé en fonction du nombre de tâches accomplies et des heures travaillées, avec une augmentation de 20 % si le nombre de tâches dépasse 15 et une augmentation supplémentaire de 20 % si le nombre d’heures travaillées dépasse 40. Comme vous pouvez le constater, le calcul actuel donne 1200. Ce résultat ne peut être obtenu qu’en utilisant des instructions if imbriquées ; voici quelques tentatives pour obtenir la même logique sans les utiliser.
main.cpp
12345678910111213141516171819202122232425#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 9; int hours_worked = 41; // If the number of completed tasks is greater than 15, if (completed_tasks > 15) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } // If the number of hours worked is more than 40 if (hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; } std::cout << current_salary << std::endl; }
Au premier abord, cela peut sembler fonctionner de la même manière, mais dans ce cas, le travailleur recevra une augmentation supplémentaire de 20 %, qu'il ait ou non accompli plus de 15 tâches. Exécuter le code et observer la sortie, qui affiche une valeur de 1200, même si cette fois le travailleur n'a pas accompli plus de 15 tâches.
main.cpp
1234567891011121314151617181920212223#include <iostream> int main() { int current_salary = 1000; int completed_tasks = 19; int hours_worked = 39; // If the number of completed tasks is greater than 15 // AND the number of of hours worked is more than 40 if (completed_tasks > 15 && hours_worked > 40) { // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; // add an 20% increase to the current salary current_salary = current_salary + current_salary * 0.2; std::cout << current_salary << std::endl; } std::cout << current_salary << std::endl; }
Dans ce cas, il peut sembler que cela devrait fonctionner comme prévu, mais malheureusement, c'est également incorrect, la sortie est 1000. En effet, si le travailleur accomplit plus de 15 tâches mais ne travaille pas plus de 40 heures, il ne recevra rien. Il est donc nécessaire d'utiliser des instructions if imbriquées afin d'obtenir la bonne implémentation.
Les instructions if imbriquées sont particulièrement utiles pour créer des processus de prise de décision et gérer des scénarios complexes dans votre code. En concevant soigneusement la structure de votre code et en maintenant sa lisibilité, vous pouvez exploiter la puissance des instructions if imbriquées afin d'écrire des programmes efficaces et faciles à maintenir.
Remarque
Les instructions
ifimbriquées sont nécessaires dans certains cas mais pas toujours. Dans la troisième section, nous aborderons quand, pourquoi et comment les éviter.
Swipe to start coding
Vous développez un système de billetterie de cinéma. Les prix des billets varient en fonction de l'âge du client et selon qu'il s'agit d'un week-end ou d'un jour de semaine.
- Utilisez des instructions if imbriquées pour déterminer le prix du billet :
- Si le client a moins de 18 ans, facturez :
12.0le week-end8.0en semaine
- Si le client a entre 18 et 60 ans, facturez :
20.0le week-end15.0en semaine
- Si le client a plus de 60 ans, facturez :
16.0le week-end10.0en semaine
- Si le client a moins de 18 ans, facturez :
- Retournez le prix du billet depuis la fonction.
Exemple
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Solution
solution.cpp
Merci pour vos commentaires !
single