Utfordring: Nøstede If-setninger
En nestet if-setning er rett og slett en if-setning inne i en annen if-setning. Denne strukturen gjør det mulig å evaluere flere betingelser, én etter én, og utføre spesifikke kodeblokker.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
Den ytre if-setningen fungerer som en portvakt, og basert på dens evaluering, kan den åpne døren for en annen if-setning inni. Tenk deg et scenario der vi ønsker å fastslå en arbeidstakers lønn basert på deres prestasjon.
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 koden beregner en ansatts nye lønn basert på antall fullførte oppgaver og arbeidede timer, med en økning på 20 % hvis oppgavene er over 15 og en ytterligere økning på 20 % hvis arbeidede timer er over 40. Som du ser, er den nåværende beregningen 1200. Dette kan kun oppnås ved å bruke nestede if-setninger, her er noen forsøk på å oppnå samme logikk uten 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; }
Først kan det virke som om det fungerer på samme måte, men i dette tilfellet vil arbeidstakeren få en ekstra 20 % lønnsøkning, uavhengig av om han har fullført mer enn 15 oppgaver. Kjør koden og se på utdataene, det vises en verdi på 1200, selv om arbeidstakeren denne gangen ikke har fullført mer enn 15 oppgaver.
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 tilfellet kan det virke som om det skal fungere som tiltenkt, men dessverre er det også feil, utdataene er 1000. Dette er fordi hvis arbeidstakeren fullfører mer enn 15 oppgaver, men ikke jobber mer enn 40 timer, får han ingenting. Derfor må vi bruke nøstede if-setninger for å få riktig implementasjon.
Nøstede if-setninger er svært nyttige for å lage beslutningsprosesser og håndtere komplekse situasjoner i koden din. Ved å utforme kode-strukturen nøye og opprettholde lesbarhet, kan du utnytte kraften i nøstede if-setninger for å skrive effektive og vedlikeholdbare programmer.
Merk
Nøstede
if-setninger er nødvendige i noen tilfeller men ikke alltid. I tredje seksjon diskuterer vi når, hvorfor og hvordan de kan unngås.
Swipe to start coding
Du utvikler et kinobillettsystem. Billettprisene varierer avhengig av kundens alder og om det er helg eller hverdag.
- Bruk nøstede if-setninger for å bestemme billettprisen:
- Hvis kunden er under 18 år, ta:
12.0i helgene8.0på hverdager
- Hvis kunden er mellom 18 og 60 år, ta:
20.0i helgene15.0på hverdager
- Hvis kunden er over 60 år, ta:
16.0i helgene10.0på hverdager
- Hvis kunden er under 18 år, ta:
- Returner billettprisen fra funksjonen.
Eksempel
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Løsning
solution.cpp
Takk for tilbakemeldingene dine!
single
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
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
Utfordring: Nøstede If-setninger
Sveip for å vise menyen
En nestet if-setning er rett og slett en if-setning inne i en annen if-setning. Denne strukturen gjør det mulig å evaluere flere betingelser, én etter én, og utføre spesifikke kodeblokker.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
Den ytre if-setningen fungerer som en portvakt, og basert på dens evaluering, kan den åpne døren for en annen if-setning inni. Tenk deg et scenario der vi ønsker å fastslå en arbeidstakers lønn basert på deres prestasjon.
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 koden beregner en ansatts nye lønn basert på antall fullførte oppgaver og arbeidede timer, med en økning på 20 % hvis oppgavene er over 15 og en ytterligere økning på 20 % hvis arbeidede timer er over 40. Som du ser, er den nåværende beregningen 1200. Dette kan kun oppnås ved å bruke nestede if-setninger, her er noen forsøk på å oppnå samme logikk uten 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; }
Først kan det virke som om det fungerer på samme måte, men i dette tilfellet vil arbeidstakeren få en ekstra 20 % lønnsøkning, uavhengig av om han har fullført mer enn 15 oppgaver. Kjør koden og se på utdataene, det vises en verdi på 1200, selv om arbeidstakeren denne gangen ikke har fullført mer enn 15 oppgaver.
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 tilfellet kan det virke som om det skal fungere som tiltenkt, men dessverre er det også feil, utdataene er 1000. Dette er fordi hvis arbeidstakeren fullfører mer enn 15 oppgaver, men ikke jobber mer enn 40 timer, får han ingenting. Derfor må vi bruke nøstede if-setninger for å få riktig implementasjon.
Nøstede if-setninger er svært nyttige for å lage beslutningsprosesser og håndtere komplekse situasjoner i koden din. Ved å utforme kode-strukturen nøye og opprettholde lesbarhet, kan du utnytte kraften i nøstede if-setninger for å skrive effektive og vedlikeholdbare programmer.
Merk
Nøstede
if-setninger er nødvendige i noen tilfeller men ikke alltid. I tredje seksjon diskuterer vi når, hvorfor og hvordan de kan unngås.
Swipe to start coding
Du utvikler et kinobillettsystem. Billettprisene varierer avhengig av kundens alder og om det er helg eller hverdag.
- Bruk nøstede if-setninger for å bestemme billettprisen:
- Hvis kunden er under 18 år, ta:
12.0i helgene8.0på hverdager
- Hvis kunden er mellom 18 og 60 år, ta:
20.0i helgene15.0på hverdager
- Hvis kunden er over 60 år, ta:
16.0i helgene10.0på hverdager
- Hvis kunden er under 18 år, ta:
- Returner billettprisen fra funksjonen.
Eksempel
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Løsning
solution.cpp
Takk for tilbakemeldingene dine!
single