In C++, puoi confrontare i valori usando gli operatori di confronto.
| Confronto | Operatore |
|---|---|
| uguale | == |
| diverso | != |
| minore | < |
| minore o uguale | <= |
| maggiore | > |
| maggiore o uguale | >= |
Il risultato di questi confronti è sempre un valore booleano:
int a{3};
bool eq1 = a != 4; // true
bool eq2 = a > 5; // false
Gli operatori == e != verificano rispettivamente se un valore è uguale a un altro oppure no.
Ecco alcuni esempi comuni:
bool eq3 = 2 == 3; // false, integer comparison
bool eq4 = 2.1 != 2.2; // true, float comparison
bool eq5 = "hello" == "hello"; // true, string comparison
Gli altri operatori verificano se un valore è maggiore (>), maggiore o uguale (>=), minore (<) o minore o uguale (<=) a un altro valore.
Questo tipo di confronto è disponibile per i numeri e per le stringhe.
Quando si confrontano le stringhe, si segue l'ordine alfabetico (noto anche come ordine lessicografico).
bool eq6 = 2 > 3; // false, integer comparison
bool eq7 = 1.2 < 1.3; // true, float comparison
bool eq8 = "Hello" < "World"; // true, string comparison
Le strutture condizionali in C++ sono simili a quelle di altri linguaggi.
Il tipo sottostante di qualsiasi operazione condizionale è il tipo bool, che può avere il valore true o false.
Le strutture condizionali sono spesso usate come meccanismi di controllo del flusso per verificare varie condizioni.
Si può usare un'istruzione if, che esegue il suo codice se la condizione sottostante è true, in questo modo:
std::string value{"val"};
if (value == "val") {
return "was val";
}
Quando i casi sono più di uno, si possono concatenare più istruzioni if usando le istruzioni else if ed else.
int number{33};
if (number > 0) {
return "positive";
} else if (number < 0) {
return "negative";
} else {
return "zero";
}
A partire da C++17, le istruzioni if possono anche includere una breve istruzione di inizializzazione, che si può usare per inizializzare una o più variabili per l'istruzione if. Per esempio:
int num{7};
if (int v{2 * num}; v > 10) {
return v;
} else {
return num;
}
// => 14
Nota: le variabili create nell'inizializzazione non sono accessibili dopo la fine dell'istruzione if.
In questo esercizio scriverai del codice per aiutarti a prepararti all'acquisto di un veicolo.
Ci sono tre compiti: uno per determinare se ti serve una patente, uno per aiutarti a scegliere tra due veicoli e uno per stimare il prezzo accettabile di un veicolo usato.
Alcuni tipi di veicolo richiedono una patente di guida per essere guidati.
Assumi che solo i tipi "car" e "truck" richiedano una patente, tutti gli altri si possono guidare senza.
Implementa la funzione needs_license(kind) che prende il tipo di veicolo come stringa e restituisce un booleano che indica se ti serve una patente per quel tipo di veicolo.
needs_license("car")
// => true
needs_license("bike")
// => false
needs_license("truck")
// => true
Valuti le opzioni tra i veicoli disponibili.
Riesci a restringerle a due, ma ti serve aiuto per prendere la decisione finale.
Per questo, implementa la funzione choose_vehicle(option1, option2) che prende due veicoli come argomenti e restituisce una decisione che include l'opzione che viene prima in ordine lessicografico.
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."
La stringa restituita dovrebbe seguire lo schema "<CHOSEN_VEHICLE> is clearly the better choice.", dove <CHOSEN_VEHICLE> è l'opzione scelta tra gli argomenti passati.
Ora che hai preso una decisione, vuoi assicurarti di ottenere un prezzo equo dal concessionario. Dato che ti interessa comprare un veicolo usato, il prezzo dipende da quanto è vecchio il veicolo. Per una stima approssimativa, assumi che se il veicolo ha meno di 3 anni costi l'80% del prezzo originale che aveva quando era nuovo di zecca. Se ha almeno 10 anni, costa il 50%. Se il veicolo ha almeno 3 anni ma meno di 10, costa il 70% del prezzo originale.
Implementa la funzione calculate_resell_price(original_price, age) che applica questa logica usando if, else if e else (ci sono altri modi, se vuoi esercitarti).
Prende il prezzo originale e l'età del veicolo come argomenti e restituisce il prezzo stimato dal concessionario.
calculate_resell_price(1000, 1)
// => 800
calculate_resell_price(1000, 5)
// => 700
calculate_resell_price(1000.0, 15)
// => 500
Nota: il valore restituito è di tipo
double.
Iscriviti a Exercism per imparare e padroneggiare C++ con 19 concetti100 esercizi e il mentoring di persone reali, tutto gratis.