Lampioni Bisogna gestire lo stato di illuminazione di una strada in termini di lampioni funzionanti. La lista dei lampioni funzionanti è mantenuta attraverso una configurazione di bit (supponiamo 8 bit). Ad ogni lampione è associato un bit della configurazione, che ne indica lo stato: 1 se il lampione è funzionante, 0 se il lampione è guasto. Le funzioni previste sono: 1.aggiornamento dello stato di un lampione, che puo' guastarsi o essere riparato 2.stampa dei lampioni funzionanti Utilizzare una funzione ausiliaria per guastare/riparare lampioni All'inizio tutti i lampioni gestiti dal programma sono funzionanti. Il programma deve fornire il seguente menù: Gestione lampioni Comandi disponibili: G Segnalare guasto ad un lampione R Segnalare riparazione di un lampione L Stampa lista lampioni funzionanti T Termina ----------------- Esempi di esecuzione del programma: Gestione lampioni Comandi disponibili: G Segnalare guasto ad un lampione R Segnalare riparazione di un lampione L Stampa lista lampioni funzionanti T Termina L I lampioni funzionanti sono i seguenti: 0 1 2 3 4 5 6 7 Gestione lampioni Comandi disponibili: G Segnalare guasto ad un lampione R Segnalare riparazione di un lampione L Stampa lista lampioni funzionanti T Termina G Quale lampione si e' guastato ? 3 Gestione lampioni Comandi disponibili: G Segnalare guasto ad un lampione R Segnalare riparazione di un lampione L Stampa lista lampioni funzionanti T Termina L I lampioni funzionanti sono i seguenti: 0 1 2 4 5 6 7 ---------------------- Possibile soluzione: #include using namespace std ; /* * Setta lo stato del lampione prescelto * funziona == true => lampione funzionante * funziona == false => lampione guasto */ void aggiorna(unsigned int &strada, int lampione, bool funziona) { if (funziona) strada |= 1<>scelta ; switch(scelta) { int lampione ; case 'G': case 'g': cout<<"\tQuale lampione si e' guastato ? " ; cin>>lampione ; aggiorna(strada, lampione, false) ; break ; case 'R': case 'r': cout<<"\tQuale lampione e' stato riparato ? " ; cin>>lampione ; aggiorna(strada, lampione, true) ; break ; case 'L': case 'l': cout<<"\tI lampioni funzionanti sono i seguenti: " ; for (int i = 0 ; i < num_lampioni ; i++) if (strada & (1<