Corso di Programmazione - Prova Pratica - 12 febbraio 2008


Nel vostro negozio di scarpe sono passati dei ladri questa notte, e hanno riposto sui ripiani tutte le scarpe, in fila ma non piu' abbinate: un mocassino 42 da uomo e' seguito da uno stivale 39 da donna, e poi da un mocassino 47 da uomo, e dall'altro stivale 39 da donna... ma quello che e' peggio e' che non per tutte le scarpe si trova quella corrispondente!

Useremo i seguenti tipi

typedef enum {Mocassino, Stivale, Sandalo, Polacchina} Modello; 
typedef enum {Uomo, Donna} Tipo;

typedef struct Scarpa{ Modello modello; Tipo tipo; int numero; struct Scarpa* next;
} Scarpa;
typedef Scarpa* ListaScarpe;

Esercizio 1: Implementare la seguente funzione:

int conta(ListaScarpe l, Modello m, Tipo t);

La funzione conta restituisce il numero di paia di scarpe del modello m e del tipo t presenti nella lista.


Esercizio 2: Implementare la seguente procedura:

void spaiate(ListaScarpe *l);

La procedura spaiate toglie dalla lista *l tutte le paia di scarpe correttamente abbinabili: all'uscita della procedura in *l resteranno quindi solo scarpe spaiate!


Esercizio 3: Implementare la seguente procedura:

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

All'uscita della procedura statistica , nell'array bidimensionale tabella (dove le righe sono relative al modello e le colonne relative al tipo) dovremo avere i dati sulle scarpe presenti nella lista l: nella casella tabella[0][0] quanti mocassimi da uomo, nella casella tabella[1][1] quanti stivali da donna, nella casella tabella[3][0] quante polacchine da uomo, eccetera.


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