Track
/
C++
C++
/
Esercizi
/
Acquisto di un veicolo
Acquisto di un veicolo

Acquisto di un veicolo

Esercizio di apprendimento

Introduzione

Confronti

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

Istruzioni if

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.

Istruzioni

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.

1. Determina se ti servirà la patente di guida

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

2. Scegli tra due potenziali veicoli da comprare

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.

3. Calcola una stima del prezzo di un veicolo usato

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.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
C++ Exercism

Vuoi iniziare Acquisto di un veicolo?

Iscriviti a Exercism per imparare e padroneggiare C++ con 19 concetti100 esercizi e il mentoring di persone reali, tutto gratis.