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 funzione:

Festival iscrizioni( );

La funzione iscrizioni crea e restituisce un valore di tipo Festival inizializzato con dei valori inseriti dall'utente (i voti iniziali assegnati alle canzoni devono essere 0).


Esercizio 2: Implementare la seguente funzione:

void smista(Festival f, Festival *in_gara, Festival *ospiti);

Partendo dal valore passato come primo parametro, la procedura smista deve creare due nuove liste (lasciando intatta  f): una costituita di soli cantanti in gara, appartenenti alla categoria big o giovani, l'altra costituita di soli ospiti. Le due nuove liste devono essere restituite usando i parametri in_gara e ospiti.


Esercizio 3: Implementare la seguente procedura:

void vincitore_giovani(Festival f);

La procedura vincitore_giovani determina la canzone vincitrice del festival f nella categoria giovani. Una volta identificata tale canzone, la procedura deve stamparne a video il  titolo, il nome del cantante e il voto finale ottenuto.


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