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
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.
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.
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
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.
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.
Inscreve-te no Exercism para aprenderes e dominares C++ com 19 conceitos100 exercícios, e mentoria humana real, tudo grátis.