nikpez di nikpez
Ominide 738 punti

Esercizio C - Gestione teatro

In un teatro le file sono numerate da 1 a F ed i posti di ciascuna fila sono numerati da 1 a P. Le “poltronissime”
stanno nelle prime L file, L < F, ed i posti “normali” nelle restanti file. Nel seguito, indicheremo con posto
(f, p) il p-esimo posto della f-esima fila.
Il teatro permette di prenotare i posti per telefono. Quando si prenota un posto, viene rilasciato un numero di
prenotazione (numero intero progressivo da 1 a F*P), che verrà esibito all’ingresso del teatro.
In C il teatro può essere descritto come segue.
const int F = 30, P = 20, L = 5;
const double NORM = 15.50; // costo di un posto normale
const double POLT = 50.0; // costo di una poltronissima
int teatro[F]

; // Il teatro
int prenotazione=0;
La variabile prenotazione fornisce il numero della prenotazione corrente e viene incrementato di una unità per

ogni nuova prenotazione. L’elemento teatro[j] specifica se il posto (i+1, j+1) è libero oppure prenotato. Se
tale posto è libero teatro[j] contiene il valore 0 altrimenti, se è prenotato, contiene il numero di prenotazione.
Inizialmente tutti i posti del teatro sono liberi.
L’end user inserisce e riceve il numero di fila e di posto a partire da 1.
Dopo aver opportunamente inizializzato la struttura dati attraverso la funzione init(), scrivere il corpo delle
seguenti funzioni C:
stampaPianta() che stampa la pianta del teatro secondo il seguente formato
1 2 3 4 … P
1 X O X X … X
2 O O X O … X
… … … … … … …
F X X X X … X
dove ‘X’ indica un posto riservato e ‘O’ un posto libero.
2
- prenota() che, se possibile, prenota il posto (f, p) e ritorna 1 e il numero di prenotazione. La funzione
ritorna –1 se f o p ha un valore non ammissibile; oppure 0 se il posto è occupato.
- incasso() che ritorna l’incasso del teatro.
- poltroneAffiancateInFila() che ritorna 1 se nella fila specificata (non fare il controllo di correttezza) esiste
almeno una coppia di poltrone libere affiancate e 0 altrimenti. Nel primo caso, la funzione deve anche
tornare il numero di poltrona minore. Questa funzione non effettua alcuna prenotazione.
- poltroneAffiancate(), che utilizzando la funzione precedente, ritorna 1 se nel teatro esiste almeno una
coppia di poltrone affiancate e 0 altrimenti. Nel primo caso la funzione deve anche tornare il numero della
fila della coppia ed il numero di poltrona minore. Questa funzione non effettua alcuna prenotazione.
Scrivi un main di prova delle funzioni sopra descritte.

Registrati via email