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.