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

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. void aggiorna(Medagliere m, Atleta a);

    Questa procedura deve aggiornare il medagliere m incrementandolo con l'informazione relativa all'atleta atleta e producendo un messaggio di errore nel caso il campo posizione di atleta sia uguale a 0.



  2. ListaAtleti* seleziona_sport(ListaAtleti* lista, Sport s);

    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 disciplina sportiva s.


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