nikpez
Ominide
3 min. di lettura
Vota 3 / 5

Concetti Chiave

  • Il teatro è strutturato con file numerate da 1 a F e posti in ciascuna fila numerati da 1 a P, con le poltronissime situate nelle prime L file.
  • Le prenotazioni avvengono telefonicamente, assegnando un numero di prenotazione progressivo da 1 a F*P, che deve essere esibito all'ingresso del teatro.
  • Il costo di un posto normale è di 15,50 euro, mentre quello di una poltronissima è di 50 euro, con una gestione delle prenotazioni che utilizza un array per indicare posti liberi o prenotati.
  • La funzione stampaPianta() visualizza la disposizione dei posti, contrassegnando con 'X' i posti riservati e con 'O' quelli liberi.
  • Sono previste funzioni aggiuntive per la prenotazione dei posti, il calcolo dell'incasso e la verifica della disponibilità di poltrone affiancate in una fila o nel teatro.
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, 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.

Domande da interrogazione

  1. Qual è la struttura di base del teatro e come vengono gestite le prenotazioni?
  2. Il teatro è composto da F file e P posti per fila, con le prime L file designate come "poltronissime". Le prenotazioni sono gestite tramite un numero progressivo che viene incrementato ad ogni nuova prenotazione.

  3. Come viene rappresentato lo stato dei posti nel teatro?
  4. Lo stato dei posti è rappresentato in un array dove un valore di 0 indica un posto libero e un numero di prenotazione indica un posto occupato.

  5. Quali sono le funzioni principali da implementare per la gestione del teatro?
  6. Le funzioni principali includono stampaPianta() per visualizzare lo stato dei posti, prenota() per effettuare prenotazioni, incasso() per calcolare l'incasso totale, poltroneAffiancateInFila() per trovare poltrone libere affiancate in una fila, e poltroneAffiancate() per trovare poltrone libere affiancate in tutto il teatro.

  7. Come si calcola l'incasso totale del teatro?
  8. L'incasso totale si calcola sommando il costo dei posti prenotati, distinguendo tra posti normali e "poltronissime", utilizzando le costanti NORM e POLT per i rispettivi costi.

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community