Il costrutto di selezione

Qui trovi un insieme di esercizi che richiedono l'utilizzo del costrutto di selezione

Richiami teorici sul costrutto di selezione

Il costrutto della selezione permette di ramificare in più parti il flusso di esecuzione del programma. Se una condizione è vera si esegue un determinato blocco di istruzioni, altrimenti si esegue un altro blocco di istruzioni. Per far ciò in C++ usiamo il costrutto if -else if - else.

if (condizione1 == vera) {
//se la condizione1 è vera eseguo queste righe di codice
} else if (condizione2 == vera) {
//se condizione 1 è falsa e condizione 2 è vera eseguo queste righe di codice
} else {
//se sia la condizione1 che la condizione2 sono false eseguo queste righe di codice
}

Programma di esempio

Viene riportato un primo esempio che possiamo fare per mostrare la corretta sintassi del blocco if - else if - else.  Il programma di esempio permette all'utente di inserire un numero dalla tastiera e poi viene mostrato a schermo un messaggio che indica:

Esercizi sulla selezione if - else if -else

Esercizio 1: Maggiorenne o minorenne? 

Realizzare un programma che permetta all'utente di inserire la propria età e indichi in output se si tratta di una persona minorenne o maggiorenne.
NB: Si diventa maggiorenni a 18 anni.

Esercizio 2: Numero negativo

Realizzare un programma che permetta all'utente di inserire un numero e indichi in output se si tratta di un numero negativo.

Esercizio 3: Numeri pari

Realizzare un programma che permetta all'utente di inserire un numero e indichi in output se si tratta di un numero pari.

Esercizio 4: Mostrare numeri crescenti.

Realizzare un programma che chieda all'utente di inserire due numeri interi diversi e mostra tali numeri in ordine crescente.

Esercizio 5: Scopri se sei un vero Boomer!

Svolgere in C++ un programma che chieda l'età all'utente e che mostri un messaggio in base all'età:

Esercizio 6: Multipli

Il programma legge due numeri e controlla se il primo è multiplo del secondo.


Esercizio 7: minimo tra tre numeri

Realizzare un programma che letti 3 numeri in input mostri a schermo il valore più piccolo.

Esercizio 8: massimo tra tre numeri

Realizzare un programma che letti 3 numeri in input mostri a schermo il valore più grande.

Esercizio 9: Il voto del prof

Realizzare un programma che letto in input un voto (numero double), mostri a schermo il voto arrotondato ad intero con questo criterio:

Esempio: 

7.2 → 7  7.5 → 7 7.6 → 8 7.9 → 8

Esercizio 10: Le temperature

L’utente inserisce una temperatura in Celsius e il calcolatore la converte in Fahrenheit ed in Kelvin. Se la temperatura inserita è minore dello zero assoluto (-273,15), il calcolatore segnala un errore.

Si ricordi che:

Esercizio 11: Il negozio conveniente

Giovanni deve acquistare un computer ed è indeciso tra due negozi. Questi negozi hanno i prezzi di partenza uguali, ma attuano una politica di sconto diversa:

Scrivi un programma che, inserendo il totale della spesa, ne calcola lo sconto di entrambi i negozi ed indichi a Giovanni quale è il negozio in cui conviene acquistare il bene.

Esercizio 12: Confrontare due orari

Scrivere un programma che legge 2 orari in ore minuti e secondi e dice quale viene prima dei due. (Si provi a risolvere l’esercizio senza trasformare tutto in secondi).

Esercizio 13: Anno bisestile

Realizzare un programma che legga in input un anno e che restituisca in output se l’anno letto è bisestile. 

(Un anno è bisestile se è divisibile per 4. Fanno eccezione gli anni secolari (es 1700, 1800, 1900…). Infatti, un anno secolare è bisestile solo se è divisibile per 400.


Esercizio 14: Le stagioni

Realizzare un programma che prende in input la prima lettera di una stagione ('i' per inverno, 'e' per estate e cos' via...). Tale programma deve mostrare a schermo il nome completo della stagione, il giorno in cui inizia ed il giorno in cui termina.

Esercizio 15: Numeri interi in sequenza unitaria.

Realizzare un programma che sia in grado di leggere da tastiera 5 numeri. Il programma deve riconoscere se tali numeri sono stati inseriti come una sotto-sequenza dei numeri interi, cioè sono numeri che hanno una distanza unitaria.
Esempi:

Esercizio 16: Attenzione alla multa

Dato l’articolo 142 del Codice della strada:

Si  scriva  un  programma  C++  che  legge  in  input  la  velocità  massima consentita e la velocità rilevata e stampa un messaggio del tipo:

"Limite rispettato" oppure "Limite violato e la multa da pagare è ...".

Esercizio 17: Sconti di Natale

Realizzare un programma che simuli gli sconti di Natale di un negozio. 

Il programma deve chiedere all'utente di inserire il prezzo relativo ai propri acquisti e mostri a schermo lo sconto ed il prezzo finale da pagare.

Richiami teorici sugli operatori logici

Gli operatori logici sono:

! not. Si tratta di un operatore unario, cioè che agisce su di una sola condizione. Restituisce vero se la condizione a cui si riferisce è falsa.
Esempi:
! (5 > 3)   --> false perché la condizione  accanto il not è vera.
!(5 > 6) --> true perché la condizione accanto il not è falsa.

&& and. Si tratta di un operatore logico binario, cioè agisce su due condizioni. Restituisce vero se le due condizioni a cui si riferisce sono vere.
Esempi:
5 > 3 && 5 < 10  --> true perché entrambe le condizioni sono vere
5 > 3 && 5 < 2     --> false, perché anche se la prima condizione è vera, tuttavia la seconda è falsa. 

|| or. Si tratta anch'esso di un operatore logico binario. Restituisce vero se almeno una delle due condizioni a cui si riferisce è vera.
Esempi:
5 > 3 || 5 < 2   --> true perché la prima condizione è vera.
5 < 3 || 2 > 3  --> false perché entrambe le condizioni sono false.

In una sequenza di condizioni unite da diversi operatori logici quale operatore viene considerato prima? Per primo si considera l'operatore not !. Successivamente viene preso in considerazione l'operatore and && e alla fine l'operatore or ||.
Si riassume adesso la gerarchia degli operatori logici:

Esercizio 18: numero nell'intervallo. 

Realizzare un programma che chieda all’utente di inserire un numero intero. Il programma deve riconoscere se tale numero è interno ad uno dei seguenti intervalli:

Esempi:
Utente inserisce 42 --> “Il numero 42 è valido”.
Utente inserisce 32 --> “Il numero 32 inserito non è valido”.

Esercizio 19: promozione del cinema.

Realizzare un programma che dopo aver chiesto l'età all'utente indica se tale persona può usufruire della promozione del cinema. La promozione è riservata a coloro che NON hanno meno di 64 anni OPPURE a chi ha tra 5 E 18 anni.

Per svolgere l'esercizio usare tutti e tre gli operatori !, && e ||.

Esercizio 20: individua il triangolo

Realizzare un programma che legga il valore dei tre lati di un triangolo. Il programma deve indicare in output se il triangolo inserito è:

Richiami teorici sul costrutto Switch - Case

Il costrutto switch case permette di diversificare il flusso del programma in base ai valori assunti da una variabile numerica o di tipo char.
Si ricorda che con il costrutto switch-case non è possibile indicare dei confronti o condizioni con operatori logici. Bensì, si può indicare solo il singolo valore che la variabile può assumere. 

Esempio:
switch(variabile) {
case 1: //se variabile == 1
cout << "variabile = 1" << endl;
break;
case 4: //se variabile == 4
cout << "variabile = 4" << endl;
break;
default:
cout << "variabile diversa da 1 e 4" << endl;
}

L'istruzione break è fondamentale per evitare che si esegua il codice presente anche nei successivi casi e nel default. 

Esercizio 21: Riconoscere le vocali

Realizzare un programma che sia in grado di riconoscere se l'utente ha inserito una vocale. 

NB: usare il costrutto switch-case. Può esserti utile la funzione tolower(char c); che trasforma in minuscolo il carattere inserito come parametro.

Esercizio 22:  Studente di informatica. 

Realizzare un programma che chieda all’utente di inserire il nome, l’età e se studia informatica. Per capire se studia informatica usa una variabile char che l’utente inizializzerà in questo modo:

In base al carattere inserito dall'utente il programma deve mostrare un messaggio simile ai seguenti:

Esercizio 23: La lotteria.

Realizzare un programma che legge in input la posizione del biglietto vincente ed indica in output il valore della vincita.

Esercizio 24: La calcolatrice

Realizzare un programma che chieda all’utente di inserire due numeri reali e permetta all’utente di scegliere quale operazione fare con i due numeri.

Fare attenzione che la divisione per zero non è ammessa!! 

Esercizio 25: Lo chalet "Neve d'oro"

Realizzare un programma che consenta di capire il costo complessivo di una vacanza nello chalet "Neve d'oro". 

Il costo giornaliero delle camere variano in base alla stagione e in base alla tipologia di camera:

Calcolare il costo complessivo della vacanza sapendo:

Si supponga che per la vacanza la tipologia rimanga sempre la stessa ed anche la tipologia di camera.

Esercizio 26: Il punteggio delle carte

Realizzare un programma che consenta di inserire le informazioni di due carte estratte dal mazzo di 40 carte italiane. Le carte sono caratterizzate dalle seguenti informazioni:

Indicare quale delle due carte inserite dall'utente è quella di maggiore valore.

Esempio:

Esercizio 27: La primiera

Realizzare un programma che consenta di inserire le informazioni di una "primiera" nel gioco di carte scopa. Nella primiera i valori delle carte è diverso ed è il seguente: 

Il programma acquisiti in input la migliore carta per ognuno dei quattro semi (denari, spade, coppe, bastoni) deve calcolare il valore totale di tale primieria.

Esempio:

Esercizio 28: Chi ha vinto a rubamazzo?

Due giocatori stanno giocando a rubamazzo (gioco che si fa con il mazzo di 40 carte italiane). L'obiettivo del gioco è aver preso il numero maggiore di carte al termine della partita.
Il programma deve:

Nota bene: gestisci i casi in cui l'input dell'utente è errato. Ad esempio se il primo giocatore dichiara di avere 41 carte, mostrare a schermo un messaggio di errore tipo "Impossibile avere 41 carte al termine della partita" e terminare il programma . Gestire tutti gli altri casi di possibile input errato.

Esercizio 29:  Le misure del triangolo

Realizzare un programma che chiede all'utente i valori dei tre lati di un triangolo. Il programma deve verificare che le misure inserite dall'utente siano accettabili. Infatti, affinché i tre valori rappresentino i lati di un triangolo deve essere vero che:

Esempio: 

Esercizio 30Numeri concordi o discordi?

Realizzare un programma che chiede all'utente di inserire due valori numerici. Il programma deve verificarese i due numeri inseriti sono :

Esempio: 

Esercizio 31Indicare il quadrante

Realizzare un programma che chiede all'utente di inserire un punto del piano cartesiano:

Esempio: 

Esercizio 32:  L'atm speciale

.Un bancomat soddisfa una richiesta di prelievo di una somma di denaro adottando la seguente strategia:

Ad esempio, se la somma richiesta è 190, verranno emesse 3 banconote da 50 e 2 da 20. Si noti che non tutte le richieste possono essere soddisfatte. Ad esempio, se la somma richiesta è 180, vengono emesse 3 banconote da 50 e una da 20, per un totale di 170 euro.

Scrivere un programma che chiede all'utente di inserire la somma richiesta (un intero), calcola quante banconote da 50 e 20 verranno emesse e il totale corrispondente ai soldi emessi.