Ricordiamo che il costrutto switch consente una selezione a più vie, cioè una selezione multipla.
Uno degli esercizi con switch case in C++ che vi voglio proporre è quello già spiegato in questo tutorial:
Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
- ⏱️ 9 ore di corso registrato
- 🧩 Più di 50 algoritmi risolti passo passo
- 🎯 Livello base
- 💻 100% online, fruibile quando vuoi
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++
2- Variabili in C++
3- Operatori di assegnazione in C++
4- Esempi in C++
5- Casting in C++
Successione di Fibonacci in C++