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

  1. Qual è la struttura di numerazione dei posti in un teatro secondo il testo?
  2. 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".

  3. Quali sono le funzioni principali richieste per gestire il teatro in C?
  4. 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.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community