Corso di Programmazione - Prova Pratica - 12 febbraio 2008


Qualcuno vi ha fatto un bello scherzo, mettendo le mani nell'armadio dove tenete la vostra biancheria: anziche' avere calzettoni e calzini appaiati e ordinati, davanti a voi c'e' una pila di calzettoni e calzini, tutti messi alla rinfusa, un calzetto lungo verde seguito da una calzetto corto nero, un calzetto corto grigio e poi l'altro calzetto lungo verde... e quello che e' peggio e' che non per tutti si trova il corrispondende!

Per la prova di oggi useremo i seguenti tipi:

typedef enum {Verde, Grigio, Bianco, Nero} Colore; 
typedef enum {Corto, Lungo} Lunghezza;

typedef struct Calzetto{
Colore colore; Lunghezza lunghezza;
struct Calzetto* next;
} Calzetto;
typedef Calzetto* ListaCalzetti;

Esercizio 1: Implementare la seguente funzione:

int conta(ListaCalzetti l);

La funzione conta restituisce il numero di paia di calzetti (della stessa lunghezza e dello stesso colore!) presenti nella lista.


Esercizio 2: Implementare la seguente procedura:

void spaiati(ListaCalzetti *l);

La procedura spaiati toglie dalla lista *l tutte le coppie di calzetti correttamente abbinabili: all'uscita dela procedura in *l resteranno quindi solo calzetti spaiati!


Esercizio 3: Implementare la seguente procedura:

void statistica(ListaCalzetti l, int tabella[4][2]);

All'uscita della procedura statistica, nell'array bidimensionale di interi tabella (dove le righe sono relative al colore e le colonne relative alla lunghezza) dovremo avere i dati corretti relativi ai calzetti presenti nella lista l: nella casella tabella[0][0] dovremo avere il numero totale di calzetti corti e verdi, nella casella tabella[1][1] il numero dei calzetti lunghi e grigi, nella casella tabella[3][0] il numero dei calzetti corti e neri, eccetera.


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