Corso di Programmazione - Prova Pratica - Quinto Appello - 20 giugno 2001 - prova 601


L'esame di oggi ha a che fare con una gara di pesca.

Il tipo Pesce è una struttura con due campi, che ne dicono la specie (carpa, luccio o trota) ed il peso, rispettivamente..

Un valore del tipo Pescatore rappresenta un concorrente della gara di pesca. Ha un nome, gli viene assegnata una postazione (di tipo intero), e man mano che i pesci abboccano alla sua lenza questi si aggiungono alla lista dei pesci da lui pescati, rappresentata dal campo rete.

Una gara è un valore di tipo Gara, ovvero un array di pescatori.

	#define MAX 100


	typedef enum TipoPesce {Carpa, Trota, Luccio} TipoPesce;


	typedef struct Pesce{
			TipoPesce tipo;
			double peso;
	} Pesce;

	
	typedef struct Rete{
			Pesce pesce;			
			struct Rete* next;
	} Rete;


	typedef struct Pescatore{
		char* nome;
		int postazione;		
		Rete* rete;	
	} Pescatore;


	typedef Pescatore Gara[MAX];

Implementare le seguenti procedure:

  1. void IscriviConcorrente(Gara gara, char* nome, int postazione, int i);
    La procedura IscriviConcorrente(g, id, h, i) inserisce nella cella g[i] i dati di un nuovo concorrente, un pescatore del quale vengono passati il nome id e la postazione di pesca h a lui assegnata. Ovviamente la rete del nuovo concorrente iscritto alla gara sarÓ inizialmente vuota!.


  2. void Abbocca(Gara gara, int i, TipoPesce tipo, double peso);
    La chiamata della procedura Abbocca(g, i, t, kg) corrisponde al fatto che un pesce di tipo t e di peso kg abbocca all'amo del pescatore g[i]. Lo stato della rete di tale pescatore dovrà essere opportunamente aggiornato.


  3. double ReteVincente(Gara gara, int dim);

    La chiamata della funzione ReteVincente(g,n) restituisce il peso della rete piu' pesante, in base al quale sarà possibile determinare il vincitore della gara g. La dimensione della porzione significativa dell'array g da considerare Ŕ n.


  4. double MaxPesce(Gara gara, int dim);

    La chiamata della funzione MaxPesce(g,n) restituisce il peso del pesce piu' pesante tra tutti quelli pescati dagli n concorrenti della gara g.


  5. void Stampa(Gara gara, int n);

    La chiamata della funzione Stampa(g, n) produce una rappresentazione sullo standard output dello stato della gara g: per ognuno degli n concorrenti deve dirne il nome, la postazione, e lo stato della rete.

IMPORTANTE: