[SOL] Esercizio n. 46 Selettive (46_selettive)
Spiegazione del Programma per il Calcolo delle Multe Stradali
Questo programma in C++ simula un sistema per calcolare le multe per eccesso di velocità. Vediamo come funziona passo dopo passo.
Struttura Generale del Programma
Il programma è organizzato in modo logico e segue questi passaggi principali:
- Acquisisce i dati dall'utente
- Calcola il superamento del limite
- Determina la sanzione appropriata
- Mostra i risultati
Analisi del Codice
Inclusione delle Librerie e Dichiarazione delle Variabili
#include <iostream>
using namespace std;
int main() {
int limite, velocitaRilevata;
#include <iostream>permette di usare le funzioni di input/outputusing namespace stdevita di scriverestd::prima dicoutecin- Vengono dichiarate due variabili intere per memorizzare il limite di velocità e la velocità rilevata
Acquisizione dei Dati
cout << "Inserire il limite di velocita' della strada (km/h): ";
cin >> limite;
cout << "Inserire la velocita' rilevata dell'auto (km/h): ";
cin >> velocitaRilevata;
Il programma chiede all'utente di inserire:
- Il limite di velocità della strada
- La velocità effettivamente rilevata del veicolo
Calcolo del Superamento
int superamento = velocitaRilevata - limite;
double sanzione;
- Si calcola di quanto è stato superato il limite (può essere negativo se non c'è superamento)
- Si dichiara una variabile
doubleper la sanzione (può contenere decimali)
Sistema di Calcolo delle Multe
Il programma utilizza una struttura if-else if-else per determinare l'importo della multa:
if (superamento <= 0) {
sanzione = 0;
} else if (superamento <= 10) {
sanzione = 42;
} else if (superamento <= 40) {
sanzione = 173;
} else {
sanzione = 543;
}
Le fasce di sanzione sono:
- Nessun superamento (≤ 0 km/h): 0 euro
- Superamento fino a 10 km/h: 42 euro
- Superamento da 11 a 40 km/h: 173 euro
- Superamento oltre 40 km/h: 543 euro
Visualizzazione dei Risultati
cout << "\n--- Esito controllo ---" << endl;
cout << "Limite: " << limite << " km/h" << endl;
cout << "Velocita' rilevata: " << velocitaRilevata << " km/h" << endl;
if (superamento <= 0) {
cout << "Nessun superamento del limite. Nessuna multa." << endl;
} else {
cout << "Superamento di " << superamento << " km/h." << endl;
cout << "Sanzione da pagare: " << sanzione << " euro" << endl;
}
Il programma mostra:
- I dati inseriti (limite e velocità rilevata)
- Se c'è stato superamento e di quanto
- L'importo della eventuale sanzione
Esempio di Esecuzione
Caso 1 - Nessun superamento:
- Limite: 50 km/h
- Velocità rilevata: 45 km/h
- Risultato: Nessuna multa
Caso 2 - Superamento lieve:
- Limite: 50 km/h
- Velocità rilevata: 58 km/h
- Risultato: Multa di 42 euro
Caso 3 - Superamento grave:
- Limite: 50 km/h
- Velocità rilevata: 95 km/h
- Risultato: Multa di 543 euro
Concetti Informatici Utilizzati
- Variabili: per memorizzare i dati
- Input/Output: per comunicare con l'utente
- Strutture condizionali: per prendere decisioni basate sui dati
- Operazioni aritmetiche: per calcolare il superamento
Questo programma è un ottimo esempio di come l'informatica possa essere applicata a situazioni reali della vita quotidiana!
#include <iostream>
using namespace std;
int main() {
int limite, velocitaRilevata;
cout << "Inserire il limite di velocita' della strada (km/h): ";
cin >> limite;
cout << "Inserire la velocita' rilevata dell'auto (km/h): ";
cin >> velocitaRilevata;
// Calcolo del superamento (differenza tra velocita' rilevata e limite)
int superamento = velocitaRilevata - limite;
double sanzione;
// Determinazione della sanzione in base alle fasce previste
if (superamento <= 0) {
sanzione = 0;
} else if (superamento <= 10) {
sanzione = 42;
} else if (superamento <= 40) {
sanzione = 173;
} else {
sanzione = 543;
}
// Output del risultato
cout << "Limite: " << limite << " km/h" << endl;
cout << "Velocita' rilevata: " << velocitaRilevata << " km/h" << endl;
if (superamento <= 0) {
cout << "Nessun superamento del limite. Nessuna multa." << endl;
} else {
cout << "Superamento di " << superamento << " km/h." << endl;
cout << "Sanzione da pagare: " << sanzione << " euro" << endl;
}
return 0;
}