Esercizi con switch case in C++

Esercizi con switch case in C++

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:\ncategoria P = pensionati, S = studenti, D = disoccupati):\t ";
	cin>>categoria ;
	cout<<"prezzo biglietto:\t ";
	cin>>costo;
	
	switch (categoria) {
		case 'P': costo*=0.9;
		break;
		case 'S': costo*=0.85;
		break;
		case 'D': costo*=0.75;
		break;
		default: cout <<"paghi il prezzo intero"<<endl;	
	}
	
	cout<< "Pagherai : \t"<<costo<<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;
	cout <<"Qual e' il voto (A, B, C, D o E)?"<<endl;
	cin >> voto;
	int errore=0;

	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 \t"<<significato<<"."<<endl;
	return 0;
	}

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++



Switch case in C++

Switch case in C++

In quest’articolo parleremo dello switch case in C++.

Il costrutto switch consente di realizzare una selezione a più vie, cioè una selezione multipla.

La struttura sintattica è questa:

switch (espressione) {

case <valore1>: 

istruzioni1;

break;

case <valore2>: 

istruzioni2;

break;

….

default

istruzioni;

}

In fase di esecuzione si valuta espressione e viene confrontata con valore1. Se i due valori sono uguali allora si esegue il codice specificato dopo i due punti corrispondenti. La parola chiave break causa l’uscita immediata dallo switch, quindi il controllo viene trasferito alla fine del blocco, cioè alla prima istruzione che segue lo switch.

Se espressione non è uguale a valore1 allora si confronta espressione con valore2. Di conseguenza, se sono uguali si esegue il codice specificato dopo i due punti e dopo si uscirà dallo switch con l’istruzione break.

E così via.

Nel caso in cui nessuna delle condizioni è verificata si esegue ciò che è indicato nella parola riservata default.


Esempio di switch case in C++

Facciamo un semplice esempio: realizziamo una calcolatrice usando lo switch case in C++.

Quindi verrà utilizzata una variabile di tipo char operatore, la quale verrà confrontata di volta in volta con il simbolo immesso (+, -, * o /). Se nessuno dei valori è uguale alla variabile operatore allora si avrà in output il messaggio “undefined”.

Controlliamo inoltre se il secondo operando è uguale a zero, perchè ricordiamo non è possibile dividere un numero per zero.

#include <iostream>
using namespace std;

int main (){
	float a, b, ris;
	char operatore;

	cout<<"Qual e' il primo operando?"<<endl;
	cin>>a;
	cout<<"Qual e' l'operatore(+, -, * o /)?"<<endl;
	cin>>operatore;
	cout<<"Qual e' il secondo operando?"<<endl;
	cin>>b;

	switch (operatore) {
		case '+': ris=a+b;
		break;
		case '-': ris=a-b;
		break;
		case '*': ris=a*b;
		break;
		case '/': if (b!=0)
				ris=a/b;
			   else 
				cout <<"Non si puo' dividere per zero!";
		break;
		default: cout <<"Il carattere non e' riconosciuto";
	}
	cout<<a<<operatore<<b<<"="<<ris;
	return 0;
}

Potevamo anche creare una variabile che quando si verifica una condizione undefined esca. Ad esempio inizializziamo errore=0 e poi aggiungiamo:

case '/': if (b!=0)
		 ris=a/b;
	  else { cout<<"Non si puo' dividere per zero!"<<endl;
                 errore=1;} 

E anche qui:

default: cout<<"undefined"<<endl;
         errore=1;

E infine:

if(errore==0)
	cout<<a<<operatore<<b<<"="<<ris<<endl;

Facciamo un altro esempio di switch case in C++.


Esempio 2

Realizziamo un semplicissimo programma che preso in input un numero intero compreso tra 1 e 12, restituisca il mese per esteso.

Ad esempio se inserisco 1, il programma mi restituirà Gennaio.

Allego il listato completo che potete provare.

#include <iostream>
using namespace std;
 
int main()
{
    int numero;
    cout<<"Inserisci un numero che va da 1 a 12. Ti diro' il mese corrispondente." <<endl;
    cin>>numero;
    switch(numero) {
    case 1:
        cout<<"Gennaio";
        break;
    case 2:
        cout<<"Febbraio";
        break;
    case 3:
        cout<<"Marzo";
        break;
    case 4:
        cout<<"Aprile";
        break;
    case 5:
        cout<<"Maggio";
        break;
    case 6:
        cout<<"Giugno";
        break;
    case 7:
        cout<<"Luglio";
        break;
    case 8:
        cout<<"Agosto";
        break;
    case 9:
        cout<<"Settembre";
        break;
    case 10:
        cout<<"Ottobre";
        break;
    case 11:
        cout<<"Novembre";
        break;
    case 12:
        cout<<"Dicembre";
        break;
    default:
        cout<<"Il numero inserito non corrisponde a nessun mese";
    }
return 0;
}

Chiaramente questi sono solo alcuni semplici esempi di 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++


Numeri pari con Scratch

Numeri pari con Scratch

Realizziamo oggi un semplicissimo programma per i numeri pari con Scratch.

L’esercizio che vogliamo realizzare consiste nel prendere un numero in input e far dire al programma se questo numero è pari.

Questo esercizio si può proporre sia agli alunni della scuola primaria sia a quelli della scuola secondaria.

Un numero è pari se il resto della divisione per due è uguale a zero.

Ad esempio:

10/2= 5 con resto 0, quindi è un numero pari.

11/2=5 con resto 1, quindi è un numero dispari.

Infatti, gli unici resti che ho se divido un numero per due sono 0 e 1.

Procedimento esercizio numeri pari con Scratch

Innanzitutto scegliamo uno sfondo e uno sprite qualsiasi:

sfondo

Dopo un breve messaggio chiediamo di inserire in input un numero e lo memorizziamo in una variabile.

L’unica variabile che ci servirà è dunque numero.

Se numero diviso due dà come resto zero, allora il numero è pari, altrimenti è dispari.

Ecco lo script completo dell’esercizio con i numeri pari con Scratch.

pari scratch

Potremmo modificare l’esercizio proponendo di inserire n numeri e controllare quanti numeri pari e dispari sono stati inseriti.

Mi serviranno così queste variabili:

n – indica quanti elementi vogliamo inserire;

numero – è la variabile che di volta in volta contiene il numero preso in input;

conta – è il contatore dei numeri pari;

contad – è il contatore dei numeri dispari.

Quindi se il numero è pari incremento la variabile conta; se invece il numero è dispari incremento la variabile contad.

Entrambe le variabili vanno inizializzate a zero.

Ecco lo script completo dell’algoritmo per i numeri pari con Scratch.

numeri pari con scratch

Al posto di porta potrei usare anche cambia conta di 1 ad esempio.

Inoltre per i più esperti si può proporre il ciclo diversamente, utilizzando una variabile contatore.

Chiaramente questo è solo un esempio di possibile risoluzione dell’esercizio, proponete pure la vostra nei commenti sotto.

Alcuni link utili

Esercizi con Scratch

Potenze con Scratch

Quoziente potenze stessa base con scratch

Palindroma con scratch

Storiella con scratch

Serie buffa con scratch

Operazioni matematiche con scratch

Come sommare un intervallo di numeri con scratch

Anno bisestile con scratch

Selezione con scratch

Olimpiadi di informatica con scratch

Olimpaidi di matematica con scratch

Figure equivalenti con scratch

Come riconoscere gli angoli con scratch

Morra cinese con scratch

Giochi matematici autunno 2018

Esempi di giochi matematici Bocconi

Gioco della tabellina con scratch

Disegnare poligoni regolari con scratch

Numeri primi in Scratch