Tracks
/
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 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

Condicionales if

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.

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 una licencia, otra para ayudarte a elegir entre dos vehículos y otra para estimar el precio aceptable de un vehículo usado.

1. Determina si vas a necesitar una licencia de conducir

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

2. Elige entre dos posibles vehículos para comprar

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.

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

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.

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

¿Todo 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.