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.