En C++, puedes comparar valores usando los operadores de comparación.
| Comparación | Operador |
|---|---|
| igual | == |
| distinto | != |
| menor que | < |
| menor o igual que | <= |
| mayor que | > |
| mayor o igual que | >= |
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 comunes:
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 en otros lenguajes.
El tipo subyacente de cualquier operación condicional es el tipo bool, que puede tener el valor true o false.
Los condicionales suelen usarse como mecanismos de control de flujo para comprobar distintas condiciones.
Puedes usar una sentencia if, que ejecuta su código si la condición subyacente es true, así:
std::string value{"val"};
if (value == "val") {
return "was val";
}
Cuando hay más de un caso, puedes encadenar varias sentencias if usando las sentencias else if y else.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
Desde C++17, las sentencias if también pueden incluir una sentencia de inicialización corta que sirve para inicializar una o más variables para la sentencia if.
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 después del final de la sentencia if.
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 una licencia, otra para ayudarte a elegir entre dos vehículos y otra para estimar el precio aceptable de un vehículo usado.
Algunos tipos de vehículo requieren una licencia de conducir para manejarlos.
Supón que solo los tipos "car" y "truck" requieren licencia; todo lo demás se puede manejar sin licencia.
Implementa la función needs_license(kind), que recibe el tipo de vehículo como un string y devuelve un Boolean que indica si necesitas una licencia para ese tipo de vehículo.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
Evalúas tus opciones de vehículos disponibles.
Logras reducirla a dos opciones, pero necesitas ayuda para tomar la decisión final.
Para eso, 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 aparece 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."
El string que se devuelve debe seguir el patrón «<CHOSEN_VEHICLE> is clearly the better choice.», donde <CHOSEN_VEHICLE> es la opción elegida entre los argumentos que se pasan.
Ahora que tomaste una decisión, quieres asegurarte de conseguir un precio justo en el concesionario. Como te interesa comprar un vehículo usado, el precio depende de qué tan viejo sea el 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 de fábrica. 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 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 de retorno es de tipo
double.
Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.