Udfordring: Indlejrede If-sætninger
En indlejret if-sætning er blot en if-sætning inden i en anden if-sætning. Denne struktur gør det muligt at evaluere flere betingelser, én efter én, og udføre specifikke kodeblokke.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
Den ydre if-sætning fungerer som en portvagt, og baseret på dens evaluering, kan den åbne op for en anden if-sætning indeni. Overvej et scenarie, hvor vi ønsker at bestemme en arbejders løn baseret på deres præstation.
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; }
Denne kode beregner en medarbejders nye løn baseret på antallet af gennemførte opgaver og arbejdstimer, med en stigning på 20 %, hvis opgaverne er over 15, og en yderligere stigning på 20 %, hvis arbejdstimerne er over 40. Som det ses, er den nuværende beregning 1200. Dette kan kun opnås ved at bruge indlejrede if-udsagn; her er nogle forsøg på at opnå samme logik uden dem.
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; }
I starten kan det virke, som om det fungerer på samme måde, men i dette tilfælde vil medarbejderen modtage en ekstra 20% lønforhøjelse, uanset om vedkommende har udført mere end 15 opgaver. Kør koden og se outputtet, det viser en værdi på 1200, selvom medarbejderen denne gang ikke har udført mere end 15 opgaver.
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; }
I dette tilfælde kan det se ud, som om det burde fungere korrekt, men desværre er det også forkert, outputtet er 1000. Dette skyldes, at hvis medarbejderen udfører mere end 15 opgaver, men ikke arbejder mere end 40 timer, modtager vedkommende ingenting. Derfor skal vi bruge indlejrede if-sætninger for at opnå den korrekte implementering.
Indlejrede if-udsagn er meget nyttige til at skabe beslutningsprocesser og håndtere komplekse scenarier i din kode. Ved omhyggelig udformning af din kodestruktur og opretholdelse af læsbarhed kan du udnytte styrken ved indlejrede if-udsagn til at skrive effektive og vedligeholdelsesvenlige programmer.
Indlejrede if-udsagn er nødvendige i nogle tilfælde men ikke altid. I tredje afsnit vil vi diskutere, hvornår, hvorfor og hvordan de kan undgås.
Swipe to start coding
Du opretter et biografbilletsystem. Billetpriserne varierer afhængigt af kundens alder og om det er weekend eller hverdag.
- Brug indlejrede if-sætninger til at bestemme billetprisen:
- Hvis kunden er under 18 år, opkræv:
12.0i weekenden8.0på hverdage
- Hvis kunden er mellem 18 og 60 år, opkræv:
20.0i weekenden15.0på hverdage
- Hvis kunden er over 60 år, opkræv:
16.0i weekenden10.0på hverdage
- Hvis kunden er under 18 år, opkræv:
- Returnér billetprisen fra funktionen.
Eksempel
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Løsning
Tak for dine kommentarer!
single
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
Awesome!
Completion rate improved to 7.69
Udfordring: Indlejrede If-sætninger
Stryg for at vise menuen
En indlejret if-sætning er blot en if-sætning inden i en anden if-sætning. Denne struktur gør det muligt at evaluere flere betingelser, én efter én, og udføre specifikke kodeblokke.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
Den ydre if-sætning fungerer som en portvagt, og baseret på dens evaluering, kan den åbne op for en anden if-sætning indeni. Overvej et scenarie, hvor vi ønsker at bestemme en arbejders løn baseret på deres præstation.
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; }
Denne kode beregner en medarbejders nye løn baseret på antallet af gennemførte opgaver og arbejdstimer, med en stigning på 20 %, hvis opgaverne er over 15, og en yderligere stigning på 20 %, hvis arbejdstimerne er over 40. Som det ses, er den nuværende beregning 1200. Dette kan kun opnås ved at bruge indlejrede if-udsagn; her er nogle forsøg på at opnå samme logik uden dem.
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; }
I starten kan det virke, som om det fungerer på samme måde, men i dette tilfælde vil medarbejderen modtage en ekstra 20% lønforhøjelse, uanset om vedkommende har udført mere end 15 opgaver. Kør koden og se outputtet, det viser en værdi på 1200, selvom medarbejderen denne gang ikke har udført mere end 15 opgaver.
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; }
I dette tilfælde kan det se ud, som om det burde fungere korrekt, men desværre er det også forkert, outputtet er 1000. Dette skyldes, at hvis medarbejderen udfører mere end 15 opgaver, men ikke arbejder mere end 40 timer, modtager vedkommende ingenting. Derfor skal vi bruge indlejrede if-sætninger for at opnå den korrekte implementering.
Indlejrede if-udsagn er meget nyttige til at skabe beslutningsprocesser og håndtere komplekse scenarier i din kode. Ved omhyggelig udformning af din kodestruktur og opretholdelse af læsbarhed kan du udnytte styrken ved indlejrede if-udsagn til at skrive effektive og vedligeholdelsesvenlige programmer.
Indlejrede if-udsagn er nødvendige i nogle tilfælde men ikke altid. I tredje afsnit vil vi diskutere, hvornår, hvorfor og hvordan de kan undgås.
Swipe to start coding
Du opretter et biografbilletsystem. Billetpriserne varierer afhængigt af kundens alder og om det er weekend eller hverdag.
- Brug indlejrede if-sætninger til at bestemme billetprisen:
- Hvis kunden er under 18 år, opkræv:
12.0i weekenden8.0på hverdage
- Hvis kunden er mellem 18 og 60 år, opkræv:
20.0i weekenden15.0på hverdage
- Hvis kunden er over 60 år, opkræv:
16.0i weekenden10.0på hverdage
- Hvis kunden er under 18 år, opkræv:
- Returnér billetprisen fra funktionen.
Eksempel
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Løsning
Tak for dine kommentarer!
single