[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/output
  • using namespace std evita di scrivere std:: prima di cout e cin
  • 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 double per 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;
}