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.