Corso di Programmazione - Prova Pratica - 10 luglio 2008


I centimetri di pioggia caduti nella ridente citta' di Mestre sono registrati giornalmente in una tabella bidimensionale, di dimensione 31*12: ad esempio, se il nome della tabella relativa al 2007 e' A, il valore contenuto in A[5][0] rappresenta la quantita' di pioggia caduta il 6 gennaio 2007, mentre A[27][11] rappresenta quanta pioggia e' caduta il 28 dicembre 2007.

Per modellare questa situazione useremo il seguente tipo:

typedef double Pioggia_Anno[31][12];   

Esercizio 1: Implementare la seguente funzione:

int mese_piu_piovoso(Pioggia_Anno pioggia);

La funzione mese_piu_piovoso restituisce l'intero corrispondente al mese in cui e' caduta piu' pioggia, rispetto alla tabella bidimensionale di valori passata (se restituisce 2 vuol dire che guardando alla tabella passata, marzo e' stato il mese in cui sono caduti piu' centimetri di pioggia).


Esercizio 2: Implementare la seguente funzione:

double min_diff(Pioggia_Anno pioggia);

La funzione min_diff identifica, nella tabella passata come parametro attuale, i due giorni in cui la quantita' di pioggia caduta e' diversa da 0.0 ed ha i valori piu' vicini, e restituisce la differenza di tali valori.


Esercizio 3: Implementare la seguente procedura:

Pioggia_Anno* crea(double k);

La procedura crea deve restituire l'indirizzo di una nuova tabella di tipo Pioggia_Anno, allocata nello heap, ed inizializzata nel modo seguente:

Ad esempio: se a e' la tabella creata, alla cella a[12][4], che corrisponde al 13 maggio, sara' assegnato il valore k, mentre alla cella a[30][10], che corrisponderebbe al 31 novembre, e che quindi non e' una cella significativa, sara' assegnato il valore 0.0.


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