Concetti Chiave
- Il teatro è strutturato con F file e P posti per fila, suddividendo le prime L file in "poltronissime" e le restanti in posti normali.
- Le prenotazioni sono gestite tramite un numero progressivo che viene incrementato per ogni nuova prenotazione effettuata.
- Lo stato dei posti è rappresentato in un array, dove il valore 0 indica un posto libero mentre un numero di prenotazione indica un posto occupato.
- Le funzioni principali da implementare includono la visualizzazione della pianta dei posti, la prenotazione, il calcolo dell'incasso e la ricerca di poltrone affiancate libere.
- L'incasso totale del teatro è calcolato sommando i costi dei posti prenotati, utilizzando specifiche costanti per i posti normali e le "poltronissime".
Struttura del 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, 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.
Funzioni C richieste
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.
Domande da interrogazione
- Qual è la struttura di numerazione dei posti in un teatro secondo il testo?
- Quali sono le funzioni principali richieste per gestire il teatro in C?
I posti in un teatro sono organizzati in file numerate da 1 a F, e ogni fila ha posti numerati da 1 a P. Le prime L file sono riservate alle "poltronissime", mentre le restanti file contengono posti "normali".
Le funzioni principali includono init() per inizializzare la struttura dati, stampaPianta() per stampare la pianta del teatro, prenota() per prenotare un posto, incasso() per calcolare l'incasso totale, poltroneAffiancateInFila() per trovare poltrone libere affiancate in una fila, e poltroneAffiancate() per trovare poltrone libere affiancate nel teatro.