Corso di Programmazione - Prova Pratica - 12 febbraio 2008


Qualcuno vi ha fatto un bello scherzo, mettendo le mani nell'armadio dove tenete le vostre tute sportive: davanti a voi c'e' una pila di maglie e pantaloni spaiati: avete una pila in cui sotto la maglia adidas verde ci sono i pantaloni asics bianchi, sotto ancora i pantaloni adidas grigi, sotto i pantaloni adidas 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 {Adidas, Asics, Oviesse} Marca;

typedef enum {Maglia, Pantalone} Parte;

typedef struct Indumento{
Colore colore; Marca marca; Parte parte;
struct Indumento* next;
} Indumento;
typedef Indumento* ListaIndumenti;

Esercizio 1: Implementare la seguente funzione:

int conta(ListaIndumenti l, Colore c);

La funzione conta restituisce il numero di tute complete (della stessa marca) di colore c presenti nella lista l.


Esercizio 2: Implementare la seguente funzione:

ListaIndumenti non_accoppiati(ListaIndumenti l);

La procedura non_accoppiati restituisce una lista con tutti i capi spaiati (quelli che rimangono dopo aver tolto dalla lista l le tute per le quali c'e' sia la maglia che il pantalone corrispondente).


Esercizio 3: Implementare la seguente procedura:

void totali(ListaIndumenti l, int tabella[4][3]);

All'uscita della procedura totali, nell'array bidimensionale di interi tabella (dove le righe sono relative al colore e le colonne relative alla marca), dovremo avere i dati corretti relativi ai capi di abbigliamento presenti nella lista l, indipendentemente dal fatto che si tratti di una maglia o di un pantalone: nella casella tabella[0][0] dovremo avere il numero totale di indumenti adidas verdi, nella casella tabella[1][1] il numero di indumenti asics grigi, nella casella tabella[3][0] il numero di indumenti adidas neri, eccetera.


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