Corso di Programmazione - Prova Pratica - 12 febbraio 2008


Qualcuno vi ha fatto un bello scherzo, mettendo le mani in cucina dove tenete pentole e coperchi: davanti a voi c'e' una pila di pentole e coperchi spaiati: sotto il coperchio del pentolino di acciaio c'e una casseruola di alluminio, con sotto una pirofila di vetro, e sotto ancora il coperchio del pentolino di acciaio... ma quello che e' peggio e' che non per tutte le pentole si trova il coperchio corrispondende, ne' viceversa!

Per la prova di oggi useremo i seguenti tipi:

typedef enum {Casseruola, Pirofila, Pentolino, Padella} Forma; 
typedef enum {Acciaio, Vetro, Alluminio} Materiale;

typedef enum {Pentola, Coperchio} Parte;

typedef struct BatteriaCucina{
Forma forma; Materiale materiale; Parte parte;
struct BatteriaCucina* next;
} BatteriaCucina;
typedef BatteriaCucina* ListaBatterie;

Esercizio 1: Implementare la seguente funzione:

int conta(ListaBatterie l, Materiale m);

La funzione conta restituisce il numero di batterie complete (pentola e coperchio della stessa forma) di materiale m presenti nella lista l.


Esercizio 2: Implementare la seguente funzione:

ListaBatterie non_accoppiate(ListaBatterie l);

La procedura non_accoppiate restituisce una lista con tutti gli elementi spaiati (quelli che rimangono dopo aver tolto dalla lista l le coppie "pentola e coperchio" della stessa forma e materiale).


Esercizio 3: Implementare la seguente procedura:

void totali(ListaBatterie l, int tabella[2][3]);

All'uscita della procedura totali, nell'array bidimensionale di interi tabella (dove le righe sono relative alla parte e le colonne relative al materiale), dovremo avere i dati corretti relativi agli elementi presenti nella lista l, indipendentemente dalla forma : nella casella tabella[0][0]dovremo avere il numero totale di pentole di acciaio, nella casella tabella[1][2] il numero totale di coperchi di alluminio, eccetera.


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