Herausforderung: Verschachtelte If-Anweisungen
Eine verschachtelte if-Anweisung ist einfach eine if-Anweisung innerhalb einer anderen if-Anweisung. Diese Struktur ermöglicht die Auswertung mehrerer Bedingungen nacheinander und die Ausführung spezifischer Codeblöcke.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
Die äußere if-Anweisung fungiert als Türsteher und kann je nach Auswertung den Zugang zu einer weiteren if-Anweisung im Inneren ermöglichen. Betrachten Sie ein Szenario, in dem das Gehalt eines Mitarbeiters basierend auf seiner Leistung bestimmt werden soll.
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; }
Dieser Code berechnet das neue Gehalt eines Mitarbeiters basierend auf der Anzahl der erledigten Aufgaben und der gearbeiteten Stunden, mit einer Erhöhung von 20 %, wenn die Anzahl der Aufgaben über 15 liegt, und einer zusätzlichen Erhöhung von 20 %, wenn die gearbeiteten Stunden über 40 liegen. Wie ersichtlich, beträgt die aktuelle Berechnung 1200. Dies kann nur durch die Verwendung von verschachtelten if-Anweisungen erreicht werden. Hier sind einige Versuche, die gleiche Logik ohne diese zu realisieren.
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; }
Zunächst mag es so erscheinen, als würde es gleich funktionieren, aber in diesem Fall erhält der Mitarbeiter unabhängig davon, ob er mehr als 15 Aufgaben erledigt hat, eine zusätzliche Gehaltserhöhung von 20 %. Führen Sie den Code aus und betrachten Sie die Ausgabe; sie zeigt einen Wert von 1200, obwohl der Mitarbeiter diesmal nicht mehr als 15 Aufgaben erledigt hat.
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; }
In diesem Fall könnte es so wirken, als würde es wie beabsichtigt funktionieren, aber leider ist auch das nicht korrekt; die Ausgabe ist 1000. Das liegt daran, dass der Mitarbeiter, wenn er mehr als 15 Aufgaben erledigt, aber nicht mehr als 40 Stunden arbeitet, nichts erhält. Daher müssen verschachtelte if-Anweisungen verwendet werden, um die richtige Implementierung zu erreichen.
Verschachtelte if-Anweisungen sind äußerst nützlich, um Entscheidungsprozesse zu erstellen und komplexe Szenarien in Ihrem Code zu behandeln. Durch eine sorgfältige Gestaltung der Code-Struktur und die Wahrung der Lesbarkeit können Sie die Vorteile verschachtelter if-Anweisungen nutzen, um effiziente und wartbare Programme zu schreiben.
Hinweis
Verschachtelte
if-Anweisungen sind in manchen Fällen notwendig, aber nicht immer. Im dritten Abschnitt besprechen wir, wann, warum und wie man sie vermeidet.
Swipe to start coding
Sie entwickeln ein Kinoticket-System. Die Ticketpreise variieren je nach Alter des Kunden und ob es sich um ein Wochenende oder einen Wochentag handelt.
- Verwenden Sie verschachtelte if-Anweisungen, um den Ticketpreis zu bestimmen:
- Ist der Kunde unter 18 Jahren, berechnen Sie:
12.0am Wochenende8.0an Wochentagen
- Ist der Kunde zwischen 18 und 60 Jahren, berechnen Sie:
20.0am Wochenende15.0an Wochentagen
- Ist der Kunde über 60 Jahre, berechnen Sie:
16.0am Wochenende10.0an Wochentagen
- Ist der Kunde unter 18 Jahren, berechnen Sie:
- Geben Sie den Ticketpreis aus der Funktion zurück.
Beispiel
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Lösung
solution.cpp
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
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
Herausforderung: Verschachtelte If-Anweisungen
Swipe um das Menü anzuzeigen
Eine verschachtelte if-Anweisung ist einfach eine if-Anweisung innerhalb einer anderen if-Anweisung. Diese Struktur ermöglicht die Auswertung mehrerer Bedingungen nacheinander und die Ausführung spezifischer Codeblöcke.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
Die äußere if-Anweisung fungiert als Türsteher und kann je nach Auswertung den Zugang zu einer weiteren if-Anweisung im Inneren ermöglichen. Betrachten Sie ein Szenario, in dem das Gehalt eines Mitarbeiters basierend auf seiner Leistung bestimmt werden soll.
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; }
Dieser Code berechnet das neue Gehalt eines Mitarbeiters basierend auf der Anzahl der erledigten Aufgaben und der gearbeiteten Stunden, mit einer Erhöhung von 20 %, wenn die Anzahl der Aufgaben über 15 liegt, und einer zusätzlichen Erhöhung von 20 %, wenn die gearbeiteten Stunden über 40 liegen. Wie ersichtlich, beträgt die aktuelle Berechnung 1200. Dies kann nur durch die Verwendung von verschachtelten if-Anweisungen erreicht werden. Hier sind einige Versuche, die gleiche Logik ohne diese zu realisieren.
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; }
Zunächst mag es so erscheinen, als würde es gleich funktionieren, aber in diesem Fall erhält der Mitarbeiter unabhängig davon, ob er mehr als 15 Aufgaben erledigt hat, eine zusätzliche Gehaltserhöhung von 20 %. Führen Sie den Code aus und betrachten Sie die Ausgabe; sie zeigt einen Wert von 1200, obwohl der Mitarbeiter diesmal nicht mehr als 15 Aufgaben erledigt hat.
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; }
In diesem Fall könnte es so wirken, als würde es wie beabsichtigt funktionieren, aber leider ist auch das nicht korrekt; die Ausgabe ist 1000. Das liegt daran, dass der Mitarbeiter, wenn er mehr als 15 Aufgaben erledigt, aber nicht mehr als 40 Stunden arbeitet, nichts erhält. Daher müssen verschachtelte if-Anweisungen verwendet werden, um die richtige Implementierung zu erreichen.
Verschachtelte if-Anweisungen sind äußerst nützlich, um Entscheidungsprozesse zu erstellen und komplexe Szenarien in Ihrem Code zu behandeln. Durch eine sorgfältige Gestaltung der Code-Struktur und die Wahrung der Lesbarkeit können Sie die Vorteile verschachtelter if-Anweisungen nutzen, um effiziente und wartbare Programme zu schreiben.
Hinweis
Verschachtelte
if-Anweisungen sind in manchen Fällen notwendig, aber nicht immer. Im dritten Abschnitt besprechen wir, wann, warum und wie man sie vermeidet.
Swipe to start coding
Sie entwickeln ein Kinoticket-System. Die Ticketpreise variieren je nach Alter des Kunden und ob es sich um ein Wochenende oder einen Wochentag handelt.
- Verwenden Sie verschachtelte if-Anweisungen, um den Ticketpreis zu bestimmen:
- Ist der Kunde unter 18 Jahren, berechnen Sie:
12.0am Wochenende8.0an Wochentagen
- Ist der Kunde zwischen 18 und 60 Jahren, berechnen Sie:
20.0am Wochenende15.0an Wochentagen
- Ist der Kunde über 60 Jahre, berechnen Sie:
16.0am Wochenende10.0an Wochentagen
- Ist der Kunde unter 18 Jahren, berechnen Sie:
- Geben Sie den Ticketpreis aus der Funktion zurück.
Beispiel
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Lösung
solution.cpp
Danke für Ihr Feedback!
single