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

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. Medagliere* costruisci(ListaAtleti* lista);

    Questa procedura deve restituire l'indirizzo di un nuovo valore di tipo Medagliere che deve rappresentare il numero di medaglie vinte (per tipo e nazione) dagli atleti presenti in lista che hanno gia' disputato la propria gara.



  2. ListaAtleti* seleziona_migliori(ListaAtleti* lista);

    Questa funzione deve restituire l'indirizzo di una nuova lista, che contiene solo gli atleti della lista passata come parametro attuale che hanno vinto (hanno preso la medaglia d'oro).


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