Proponiamo degli esercizi con l’istruzione switch case in C++, al fine di assimilare bene il funzionamento di questo costrutto.
Ricordiamo che il costrutto switch consente una selezione a più vie, cioè una selezione multipla.
Esercizio 1 con switch case in C++
Uno degli esercizi con switch case in C++ che vi voglio proporre è quello già spiegato in questo tutorial:
https://www.codingcreativo.it/esercizio-con-if-else-in-c/
ma affrontato utilizzando gli if…else.
Svolgiamolo adesso utilizzando l’istruzione switch case.
Dunque riportiamo il testo dell’esercizio per comodità.
Su una linea ferroviaria, rispetto alla tariffa piena, i pensionati usufruiscono di uno sconto del 10%, gli studenti del 15% e infine i disoccupati del 25%.
Allora, codificando i pensionati con una P, gli studenti con una S e i disoccupati con una D, scrivere un programma che, richiesto il costo di un biglietto e l’eventuale condizione dell’utente, visualizzi l’importo da pagare.
Innanzitutto dichiaro due variabili, una di tipo char per la categoria e una di tipo float che contiene il prezzo del biglietto.
Dopo valuto categoria, se è uguale a P, eseguo quello che c’è dopo i due punti, altrimenti valuto se categoria è uguale ad S, e così via.
N.B. Ho scritto la notazione abbreviata costo*=0.9.
Potevamo anche utilizzare costo-=costo*0.1;
O in forma più ‘rudimentale’ costo=costo-costo*0.1.
Allego quindi il listato completo dell’esercizio sviluppato con switch case in C++.
#include <iostream>
using namespace std;
int main() {
char categoria;
float costo;
cout << "Inserisci la categoria:\n(P = pensionati, S = studenti, D = disoccupati): ";
cin >> categoria;
cout << "Prezzo biglietto: ";
cin >> costo;
bool categoriaValida = true; // flag per gestire il default
switch (categoria) {
case 'P':
case 'p': // gestisce anche minuscole
costo *= 0.9; // sconto 10%
break;
case 'S':
case 's': // gestisce anche minuscole
costo *= 0.85; // sconto 15%
break;
case 'D':
case 'd': // gestisce anche minuscole
costo *= 0.75; // sconto 25%
break;
default:
cout << "Categoria non riconosciuta, paghi il prezzo intero." << endl;
categoriaValida = false;
}
if (categoriaValida) {
cout << "Pagherai: " << costo << " euro" << endl;
} else {
cout << "Prezzo totale: " << costo << " euro" << endl;
}
return 0;
}
Esercizio 2
Il secondo degli esercizi con switch case in C++ che voglio proporvi è molto semplice.
Realizzare un programma, utilizzando lo switch case, che legga in input un voto rappresentato da un carattere tra A ed E e ne stampi il significato.
Ad esempio:
A significa ottimo;
B significa distinto;
C significa discreto;
D significa sufficiente;
E significa insufficiente.
Ecco quindi il listato completo dell’esercizio proposto.
#include <iostream>
using namespace std;
int main() {
char voto;
string significato;
int errore = 0;
cout << "Qual e' il voto (A, B, C, D o E)? ";
cin >> voto;
// Gestione sia maiuscole che minuscole
voto = toupper(voto);
switch (voto) {
case 'A': significato = "ottimo"; break;
case 'B': significato = "distinto"; break;
case 'C': significato = "discreto"; break;
case 'D': significato = "sufficiente"; break;
case 'E': significato = "insufficiente"; break;
default:
cout << "Errore! Voto sbagliato! Rifare!" << endl;
errore = 1;
}
if (errore == 0)
cout << "Il voto '" << voto << "' significa: " << significato << "." << endl;
return 0;
}
toupper(voto) → gestisce anche lettere minuscole (a, b, etc.) rendendo il programma più user-friendly.
Chiaramente questi sono solo dei semplicissimi esercizi con switch case in C++.
Alcuni link utili:
Indice argomenti linguaggio C++
1- Introduzione al linguaggio C++
3- Operatori di assegnazione in C++
Successione di Fibonacci in C++
