Percursos
/
C++
C++
/
Exercícios
/
Compra de veículo
Compra de veículo

Compra de veículo

Exercício de aprendizagem

Introdução

Comparações

Em C++, podes comparar valores usando os operadores de comparação.

Comparação Operador
igual ==
não igual !=
menor <
menor ou igual <=
maior >
maior ou igual >=

O resultado destas comparações é sempre um valor booleano:

int a{3};

bool eq1 = a != 4; // true

bool eq2 = a > 5;  // false

Os operadores == e != verificam, respetivamente, se um valor é igual a outro ou não. Aqui estão alguns exemplos comuns:

bool eq3 = 2 == 3; // false, integer comparison

bool eq4 = 2.1 != 2.2; // true, float comparison

bool eq5 = "hello" == "hello"; // true, string comparison

Os outros operadores verificam se um valor é maior que (>), maior ou igual a (>=), menor que (<) ou menor ou igual a (<=) outro valor. Este tipo de comparação está disponível para números e strings. Ao comparar strings, segue-se a ordem de dicionário (também conhecida como ordem lexicográfica).

bool eq6 = 2 > 3; // false, integer comparison

bool eq7 = 1.2 < 1.3; // true, float comparison

bool eq8 = "Hello" < "World"; // true, string comparison

Condicionais if

Os condicionais em C++ são semelhantes aos condicionais de outras linguagens. O tipo subjacente de qualquer operação condicional é o tipo bool, que pode ter o valor true ou false. Os condicionais são frequentemente usados como mecanismos de controlo de fluxo para verificar várias condições.

Pode usar-se um condicional if, que executa o seu código se a condição subjacente for true, assim:

std::string value{"val"};

if (value == "val") {
    return "was val";
}

Em cenários com mais do que um caso, podem encadear-se vários condicionais if usando as instruções else if e else.

int number{33};

if (number > 0) {
   return "positive";
} else if (number < 0) {
    return "negative";
} else {
   return "zero";
}

Desde o C++17, os condicionais if também podem incluir uma pequena instrução de inicialização, que pode ser usada para inicializar uma ou mais variáveis para o condicional if. Por exemplo:

int num{7};
if (int v{2 * num}; v > 10) {
    return v;
} else {
    return num;
}
// => 14

Nota: as variáveis criadas na inicialização não podem ser acedidas depois do fim do condicional if.

Instruções

Neste exercício, vais escrever código para te ajudar a preparar a compra de um veículo.

Tens três tarefas: uma para determinar se precisas de carta de condução, outra para te ajudar a escolher entre dois veículos e outra para estimar o preço aceitável de um veículo usado.

1. Determinar se vais precisar de carta de condução

Alguns tipos de veículos exigem carta de condução para serem conduzidos. Assume que só os tipos "car" e "truck" exigem carta, tudo o resto pode ser conduzido sem carta.

Implementa a função needs_license(kind), que recebe o tipo de veículo como string e devolve um Boolean a indicar se precisas de carta de condução para esse tipo de veículo.

needs_license("car")
// => true

needs_license("bike")
// => false

needs_license("truck")
// => true

2. Escolher entre dois veículos possíveis para comprar

Avalias as tuas opções de veículos disponíveis. Consegues reduzi-las a duas opções, mas precisas de ajuda para tomar a decisão final. Para isso, implementa a função choose_vehicle(option1, option2), que recebe dois veículos como argumentos e devolve uma decisão que inclui a opção que vem primeiro na ordem lexicográfica.

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."

A string devolvida deve seguir o padrão "<CHOSEN_VEHICLE> is clearly the better choice.", em que <CHOSEN_VEHICLE> é a opção escolhida de entre os argumentos recebidos.

3. Calcular uma estimativa para o preço de um veículo usado

Agora que já tomaste uma decisão, queres garantir que consegues um preço justo no concessionário. Como estás interessado em comprar um veículo usado, o preço depende da idade do veículo. Para uma estimativa aproximada, assume que, se o veículo tiver menos de 3 anos, custa 80% do preço original que tinha quando era novo. Se tiver pelo menos 10 anos, custa 50%. Se o veículo tiver pelo menos 3 anos mas menos de 10, custa 70% do preço original.

Implementa a função calculate_resell_price(original_price, age) que aplica esta lógica com if, else if e else (há outras formas, se quiseres praticar). Recebe o preço original e a idade do veículo como argumentos e devolve o preço estimado no concessionário.

calculate_resell_price(1000, 1)
// => 800

calculate_resell_price(1000, 5)
// => 700

calculate_resell_price(1000.0, 15)
// => 500

Nota: o valor devolvido é do tipo double.

Editar via GitHub A ligação abre numa nova janela ou separador
C++ Exercism

Estás pronto para começar Compra de veículo?

Inscreve-te no Exercism para aprenderes e dominares C++ com 19 conceitos100 exercícios, e mentoria humana real, tudo grátis.