Trilhas
/
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++, você pode comparar valores usando os operadores de comparação.

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

O resultado dessas comparações é sempre um valor Boolean:

int a{3};

bool eq1 = a != 4; // true

bool eq2 = a > 5;  // false

Os operadores == e != verificam se um valor é igual a outro ou não, respectivamente. Veja 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. Esse tipo de comparação está disponível para números e strings. Ao comparar strings, a ordem de dicionário (também conhecida como ordem lexicográfica) é seguida.

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

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

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

Condicionais

As condicionais em C++ são parecidas com as condicionais de outras linguagens. O tipo por trás de qualquer operação condicional é o tipo bool, que pode ter o valor true ou false. As condicionais costumam ser usadas como mecanismos de controle de fluxo para verificar várias condições.

Você pode usar uma condicional if, que executa o código dela se a condição por trás for true, assim:

std::string value{"val"};

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

Em cenários com mais de um caso, várias condicionais if podem ser encadeadas usando as condicionais 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, as condicionais if também podem incluir uma instrução de inicialização curta, que pode ser usada para inicializar uma ou mais variáveis para a condicional if. Por exemplo:

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

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

Instruções

Neste exercício, você vai escrever um pouco de código para ajudar a se preparar para comprar um veículo.

Você tem três tarefas: uma para determinar se você precisa de carteira de habilitação, uma para ajudar a escolher entre dois veículos e uma para estimar o preço aceitável de um veículo usado.

1. Determine se você vai precisar de carteira de habilitação

Alguns tipos de veículo exigem carteira de habilitação para serem conduzidos. Considere que apenas os tipos "car" e "truck" exigem habilitação, e que todos os outros podem ser conduzidos sem habilitação.

Implemente a função needs_license(kind) que recebe o tipo de veículo como string e retorna um boolean indicando se você precisa de habilitação para aquele tipo de veículo.

needs_license("car")
// => true

needs_license("bike")
// => false

needs_license("truck")
// => true

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

Você avalia as opções de veículos disponíveis. Você consegue reduzir tudo a duas opções, mas precisa de ajuda para tomar a decisão final. Para isso, implemente a função choose_vehicle(option1, option2) que recebe dois veículos como argumentos e retorna 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 retornada deve seguir o padrão de "<CHOSEN_VEHICLE> is clearly the better choice.", em que <CHOSEN_VEHICLE> é a opção escolhida entre os argumentos recebidos.

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

Agora que você tomou uma decisão, você quer garantir um preço justo na concessionária. Como você está interessado em comprar um veículo usado, o preço depende de quantos anos o veículo tem. Para uma estimativa aproximada, considere que, se o veículo tiver menos de 3 anos, ele custa 80% do preço original de quando era zero. 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.

Implemente a função calculate_resell_price(original_price, age) que aplica essa lógica usando if, else if e else (existem outras formas, se você quiser praticar). Ela recebe o preço original e a idade do veículo como argumentos e retorna o preço estimado na concessionária.

calculate_resell_price(1000, 1)
// => 800

calculate_resell_price(1000, 5)
// => 700

calculate_resell_price(1000.0, 15)
// => 500

Observação: o valor de retorno é do tipo double.

Editar via GitHub O link abre em uma nova janela ou aba
C++ Exercism

Tudo pronto para começar Compra de veículo?

Crie sua conta no Exercism para aprender e dominar C++ com 19 conceitos100 exercícios e mentoria humana de verdade, tudo de graça.