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
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.
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.
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
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.
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.
Crie sua conta no Exercism para aprender e dominar C++ com 19 conceitos100 exercícios e mentoria humana de verdade, tudo de graça.