Desafío: Sentencias If Anidadas
Una sentencia if anidada es simplemente una sentencia if dentro de otra sentencia if. Esta estructura permite evaluar múltiples condiciones, una tras otra, y ejecutar bloques de código específicos.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
La sentencia if externa actúa como un filtro, y según su evaluación, puede dar acceso a otra sentencia if interna. Considere un escenario en el que se desea determinar el salario de un trabajador según su desempeño.
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; }
Este código calcula el nuevo salario de un empleado en función del número de tareas completadas y las horas trabajadas, con un aumento del 20% si las tareas superan 15 y un aumento adicional del 20% si las horas trabajadas superan 40. Como se puede observar, el cálculo actual es 1200. Esto solo se puede lograr utilizando sentencias if anidadas; a continuación, se muestran algunos intentos de obtener la misma lógica sin ellas.
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; }
Al principio puede parecer que funciona igual, pero en este caso el trabajador recibirá un aumento extra del 20%, independientemente de si ha completado más de 15 tareas. Ejecuta el código y observa la salida, muestra un valor de 1200, aunque esta vez el trabajador no completó más de 15 tareas.
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; }
En ese caso, puede parecer que debería funcionar como se espera, pero desafortunadamente, también es incorrecto, la salida es 1000. Esto se debe a que si el trabajador completa más de 15 tareas pero no trabaja más de 40 horas, no recibirá nada. Por lo tanto, es necesario utilizar sentencias if anidadas para obtener la implementación correcta.
Las sentencias if anidadas son muy útiles para crear procesos de toma de decisiones y manejar escenarios complejos en tu código. Al diseñar cuidadosamente la estructura de tu código y mantener la legibilidad, puedes aprovechar el poder de las sentencias if anidadas para escribir programas eficientes y fáciles de mantener.
Las sentencias if anidadas son necesarias en algunos casos pero no siempre. En la tercera sección, se analizará cuándo, por qué y cómo evitarlas.
Swipe to start coding
Estás desarrollando un sistema de boletos de cine. Los precios de los boletos varían según la edad del cliente y si es fin de semana o día laborable.
- Utiliza sentencias if anidadas para determinar el precio del boleto:
- Si el cliente es menor de 18 años, cobra:
12.0en fines de semana8.0en días laborables
- Si el cliente tiene entre 18 y 60 años, cobra:
20.0en fines de semana15.0en días laborables
- Si el cliente es mayor de 60 años, cobra:
16.0en fines de semana10.0en días laborables
- Si el cliente es menor de 18 años, cobra:
- Devuelve el precio del boleto desde la función.
Ejemplo
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Solución
solution.cpp
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you show an example of nested `if` statements in code?
What are some best practices for using nested `if` statements?
Are there alternatives to nested `if` statements for complex logic?
Awesome!
Completion rate improved to 7.69
Desafío: Sentencias If Anidadas
Desliza para mostrar el menú
Una sentencia if anidada es simplemente una sentencia if dentro de otra sentencia if. Esta estructura permite evaluar múltiples condiciones, una tras otra, y ejecutar bloques de código específicos.
nested_if.h
1234567891011121314if (condition1) { // Code block 1 if (condition2) { // Code block 2 if (condition3) { // Code block 3 } } }
La sentencia if externa actúa como un filtro, y según su evaluación, puede dar acceso a otra sentencia if interna. Considere un escenario en el que se desea determinar el salario de un trabajador según su desempeño.
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; }
Este código calcula el nuevo salario de un empleado en función del número de tareas completadas y las horas trabajadas, con un aumento del 20% si las tareas superan 15 y un aumento adicional del 20% si las horas trabajadas superan 40. Como se puede observar, el cálculo actual es 1200. Esto solo se puede lograr utilizando sentencias if anidadas; a continuación, se muestran algunos intentos de obtener la misma lógica sin ellas.
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; }
Al principio puede parecer que funciona igual, pero en este caso el trabajador recibirá un aumento extra del 20%, independientemente de si ha completado más de 15 tareas. Ejecuta el código y observa la salida, muestra un valor de 1200, aunque esta vez el trabajador no completó más de 15 tareas.
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; }
En ese caso, puede parecer que debería funcionar como se espera, pero desafortunadamente, también es incorrecto, la salida es 1000. Esto se debe a que si el trabajador completa más de 15 tareas pero no trabaja más de 40 horas, no recibirá nada. Por lo tanto, es necesario utilizar sentencias if anidadas para obtener la implementación correcta.
Las sentencias if anidadas son muy útiles para crear procesos de toma de decisiones y manejar escenarios complejos en tu código. Al diseñar cuidadosamente la estructura de tu código y mantener la legibilidad, puedes aprovechar el poder de las sentencias if anidadas para escribir programas eficientes y fáciles de mantener.
Las sentencias if anidadas son necesarias en algunos casos pero no siempre. En la tercera sección, se analizará cuándo, por qué y cómo evitarlas.
Swipe to start coding
Estás desarrollando un sistema de boletos de cine. Los precios de los boletos varían según la edad del cliente y si es fin de semana o día laborable.
- Utiliza sentencias if anidadas para determinar el precio del boleto:
- Si el cliente es menor de 18 años, cobra:
12.0en fines de semana8.0en días laborables
- Si el cliente tiene entre 18 y 60 años, cobra:
20.0en fines de semana15.0en días laborables
- Si el cliente es mayor de 60 años, cobra:
16.0en fines de semana10.0en días laborables
- Si el cliente es menor de 18 años, cobra:
- Devuelve el precio del boleto desde la función.
Ejemplo
calculateTicketPrice(16, true) → 12.0
calculateTicketPrice(30, false) → 15.0
calculateTicketPrice(70, true) → 16.0
Solución
solution.cpp
¡Gracias por tus comentarios!
single