Corso di Programmazione - Prova Pratica - Primo Appello - 25 gennaio 2002 - prova 112

L'esame di oggi ha a che fare con spettacoli di un Teatro e tessere di abbonamento.

Il tipo enumerazione Genere rappresenta le diverse tipologie di spettacolo: opera, concerto, commedia, tragedia.

Gli elementi del tipo record Spettacolo rappresentano i singoli spettacoli, caratterizzati dal titolo, dal genere, dal numero di repliche previste e dalla durata prevista (in minuti).

Il tipo ListaSpettacoli è una lista semplice di Spettacoli.

Il tipo Tessera un array di stringhe: i suoi elementi sono i titoli degli N spettacoli per i quali lo spettatore in possesso di tale tessera ha diritto all'accesso gratuito al teatro.

	typedef enum Genere {opera, concerto, commedia, tragedia} Genere;
typedef struct {char* titolo; Genere genere; int repliche; int durata;} Spettacolo;
typedef struct ListaSpettacoli {Spettacolo spettacolo;
struct ListaSpettacoli *prossimo;} ListaSpettacoli; typedef char* Tessera[N];

Implementare le seguenti procedure:

  1. int Scegli(ListaSpettacoli* s, Tessera a, int d);

    Questa funzione deve selezionare (in un modo qualsiasi) N spettacoli diversi di durata inferiore a d presenti nella lista s, ed assegnarne il titolo agli elementi della tessera a. La funzione alla fine deve restituire il numero totale di repliche degli spettacoli scelti.
    Se nella lista s sono presenti meno di N spettacoli di durata inferiore a d, la funzione deve produrre un messaggio di errore sullo standard output, e restituire il valore 0.



  2. void Stampa_nomi(ListaSpettacoli* s);

    Questa funzione deve essere definita in modo ricorsivo, e deve stampare sullo standard output la lista dei nomi degli spettacoli presenti nella lista passata come parametro attuale.

Per consegnare la prova, utilizzare la procedura di consegna delle esercitazioni usata durante il corso, come se fosse l'esercitazione 112, inserendo tutte e sole le procedure realizzate da voi in un unico esercizio.