Corso di Programmazione - Prova Pratica - 19 febbraio 2004


L'esame di oggi vi chiede di gestire un festival di musica leggera.

I partecipanti ad un festival sono divisi  in  tre categorie: i big, i giovani, e gli ospiti non in gara, rappresentati dai valori del tipo enumerazione Categoria.
Ad ogni cantante e' associata una canzone, rappresentata dalla struttura Canzone che contiene tre campi: uno per il tiotolo, e due campi di tipo intero che raccolgono il voto espresso dalla giuria tecnica e dal pubblico.
Una gara canora e' quindi rappresentata da un valore di tipo Festival, cioe' una lista di cantanti iscritti.

Le regole del festival canoro prevedono che il voto finale di ogni canzone debba essere calcolato facendo la media tra il voto espresso dal pubblico e quello  espresso dalla giuria.


typedef enum {big,giovani,ospiti} Categoria;


typedef struct {
char titolo[35];
int voto_giuria;
int voto_pubblico;
} Canzone;


typedef struct {
char nome[20];
Canzone canzone;
Categoria categoria;
} Cantante;


typedef struct Elem{
Cantante cantante;
struct Elem *next;
}Elem;

typedef Elem * Festival;


Esercizio 1: Implementare la seguente procedura:

void iscrizione(Festival *f);

La procedura iscrizione aggiorna il valore del parametro f iscrivendo al festival un nuovo cantante i cui dati vengono forniti dall'utente (i voti iniziali assegnati alla nuova canzone devono essere 0). Nel caso in cui si iscriva nuovamente un cantante gia' iscritto al festival, la procedura deve produrre sullo standard output un messaggio di errore.


Esercizio 2: Implementare la seguente procedura:

void votazione_pubblico(Festival f);

La procedura votazione_pubblico deve chiedere all'utente di esprimere un voto per ognuna della canzoni iscritte al festival passato come parametro. La procedura deve aggiornare il parametro f in modo da tener conto dei voti espressi dall'utente.


Esercizio 3: Implementare la seguente funzione:

Cantante ospite_piu_gradito(Festival f);

La funzione ospite_piu_gradito restituisce un valore di tipo Cantante corrispondente al cantante di categoria ospiti la cui canzone ha ottenuto il maggior gradimento da parte del pubblico tra quelle iscritte al festival f, (cioe' la canzone a cui il pubblico ha dato il voto massimo). La funzione deve inoltre stampare a video le informazioni riguardanti la canzone preferita, cioe'  il  titolo, il nome del cantante e il voto espresso dal pubblico.


La modalità di consegna dell'esame è analoga a quella delle esercitazioni durante il corso: è sufficiente inviarlo come esercitazione numero 734. Bisogna inserire esclusivamente la definizione delle procedure, per consentirne la correzione automatica.