Rutas
/
C++
C++
/
Ejercicios
/
Compra de un vehículo
Compra de un vehículo

Compra de un vehículo

Ejercicio de aprendizaje

Introducción

Comparaciones

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

Condicionales

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.

Instrucciones

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.

1. Determina si necesitarás un carné de conducir

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

2. Elige entre dos posibles vehículos que comprar

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.

3. Calcula una estimación del precio de un vehículo de segunda mano

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.

Editar en GitHub El enlace se abre en una ventana o pestaña nueva
C++ Exercism

¿Listo para empezar Compra de un vehículo?

Regístrate en Exercism para aprender y dominar C++ con 19 conceptos100 ejercicios y mentoría humana real, todo gratis.