Corso di Programmazione - Prova Pratica - Secondo Appello - 13 febbraio 2002 - prova 125

L'esame di oggi ha a che fare con le Olimpiadi invernali di Salt Lake City.

Il tipo enumerazione Sport rappresenta le diverse discipline sportive: fondo, slittino, discesa, pattinaggio.

Il tipo enumerazione Nazione rappresenta i diversi paesi di provedinenza : Italia, Usa, Germania, Austria, Canada.

Il tipo enumerazione Medaglia rappresenta le tre medaglie attribuibili in ogni specialità: oro, argento, bronzo.

Gli elementi del tipo record Atleta rappresentano i singoli atleti, caratterizzati dal numero di pettorale, dalla nazione di provenienza, dallo sport praticato, e dalla posizione in classifica (1 se ha vinto, 2 se e' arrivato secondo, eccetera. 0 rappresenta il fatto che non ha ancora disputato la gara).

Il tipo ListaAtleti è una lista semplice di Atleti.

Il tipo Medagliere è un array bidimensionale di interi: se m è una variabile di tipo Medagliere che rappresenta lo stato dell'attribuzione delle medaglie, la cella m[oro][Usa] conterrà il numero di medaglie d'oro conquistate dalla squadra statunitense.

	typedef enum Sport {fondo, slittino, discesa, pattinaggio} Sport;
	typedef enum Nazione {Italia, Usa, Germania, Austria, Canada} Nazione;
	typedef enum Medaglia {oro, argento, bronzo} Medaglia;

typedef struct {int pettorale; Sport sport; Nazione nazione; int posizione;} Atleta;
typedef struct ListaAtleti {Atleta atleta;
struct ListaAtleti *prossimo;} ListaAtleti; typedef int Medagliere[3][5];

Implementare le seguenti procedure:

  1. Nazione vince(Medagliere m);

    Questa funzione deve restiture la nazione che ha ottenuto il medagliere più ricco. Una nazione ha un medagliere maggiore di un'altra se ha un numero maggiore di medaglie d'oro, e a parità di medaglie d'oro il maggior numero di medaglie d'argento, e a parità di medaglie d'oro e d'argento il maggior numero di medaglie di bronzo. In caso di "pari merito", la funzione restituisce una qualsiasi delle nazioni migliori.



  2. ListaAtleti* seleziona_nazione(ListaAtleti* lista, Nazione n);

    Questa funzione deve restituire l'indirizzo di una nuova lista, che contiene solo gli atleti della lista passata come parametro attuale che devono ancora gareggiare e che appartengono alla naizone n.


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