En C++, puedes comparar valores con los operadores de comparación.
| Comparación | Operador |
|---|---|
| igual | == |
| distinto | != |
| menor | < |
| menor o igual | <= |
| mayor | > |
| mayor o igual | >= |
El resultado de estas comparaciones siempre es un valor booleano:
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
Los operadores == y != comprueban, respectivamente, si un valor es igual a otro o no.
Aquí tienes algunos ejemplos habituales:
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
Los demás operadores comprueban si un valor es mayor que (>), mayor o igual que (>=), menor que (<) o menor o igual que (<=) que otro valor.
Este tipo de comparación está disponible para números y strings.
Al comparar strings, se sigue el orden del diccionario (también conocido como orden lexicográfico).
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
Los condicionales en C++ son similares a los condicionales de otros lenguajes.
El tipo subyacente de cualquier operación condicional es el tipo bool, que puede tener el valor true o false.
A menudo, los condicionales se usan como mecanismos de control de flujo para comprobar distintas condiciones.
Se puede usar un condicional if, que ejecuta su código si la condición subyacente es true, así:
std::string value{"val"};
if (value == "val") {
return "was val";
}
En situaciones con más de un caso, se pueden encadenar varios condicionales if usando else if y else.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
Desde C++17, los condicionales if también pueden incluir una breve instrucción de inicialización que sirve para inicializar una o más variables para el condicional.
Por ejemplo:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
Nota: no se puede acceder a las variables creadas en la inicialización una vez finalizado el condicional.
En este ejercicio, vas a escribir un poco de código para ayudarte a prepararte para comprar un vehículo.
Tienes tres tareas: una para determinar si necesitas un carné, otra para ayudarte a elegir entre dos vehículos y otra para estimar el precio aceptable de un vehículo de segunda mano.
Algunos tipos de vehículos requieren un carné de conducir para conducirlos.
Supón que solo los tipos "car" y "truck" requieren carné; todo lo demás se puede conducir sin carné.
Implementa la función needs_license(kind), que recibe el tipo de vehículo como string y devuelve un Boolean que indica si necesitas un carné para ese tipo de vehículo.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
Evalúas tus opciones entre los vehículos disponibles.
Consigues reducirlas a dos, pero necesitas ayuda para tomar la decisión final.
Para ello, implementa la función choose_vehicle(option1, option2), que recibe dos vehículos como argumentos y devuelve una decisión que incluye la opción que va primero en orden lexicográfico.
choose_vehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
choose_vehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
La cadena devuelta debe seguir el patrón de «<CHOSEN_VEHICLE> is clearly the better choice.», donde <CHOSEN_VEHICLE> es la opción elegida entre los argumentos pasados.
Ahora que has tomado una decisión, quieres asegurarte de conseguir un precio justo en el concesionario. Como te interesa comprar un vehículo de segunda mano, el precio depende de la antigüedad del vehículo. Para una estimación aproximada, supón que, si el vehículo tiene menos de 3 años, cuesta el 80 % del precio original que tenía cuando era nuevo. Si tiene al menos 10 años, cuesta el 50 %. Si el vehículo tiene al menos 3 años pero menos de 10, cuesta el 70 % del precio original.
Implementa la función calculate_resell_price(original_price, age), que aplica esta lógica usando if, else if y else (hay otras formas si quieres practicar).
Recibe el precio original y la antigüedad del vehículo como argumentos y devuelve el precio estimado en el concesionario.
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
Nota: el valor devuelto es de tipo
double.
Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.