Corso di Programmazione - Prova Pratica - 15 gennaio 2008


E' Carnevale, e l'esame di oggi vi chiede di gestire una fabbrica di maschere.
Per fare una maschera ci vogliono:
10 fogli di carta di giornale, 40 grammi di colla vinilica, 1 tubetto di colore, 2 elastici.
Ogni maschera, una volta prodotta, sarà inserita in un pacco (che può contenere più maschere) etichettato con il nome del cliente ed inserita in una lista di pacchi pronti per essere ritirati.
Useremo i seguenti tipi:


typedef struct {
int fogli; /* fogli di carta di giornale */
int colla; /* grammi di colla vinilica */
int tubetti; /* tubetti di colore */ int elastici; /* elastici */
} Materiale;


typedef struct Pacco{
char nome_cliente[10];
int numero_maschere; struct Pacco* next;
} Pacco;


typedef Pacco* ListaPacchi;

Esercizio 1: Implementare la seguente funzione:

int costruisci(Materiale* d);

La procedura costruisci restituisce il numero massimo di maschere che si possono produrre con le quantità presenti nel materiale *d. All'uscita della funzione, i valori dei campi di *d dovranno ovviamente essere decrementati in ragione dei prodotti effettivamente consumati.


Esercizio 2: Implementare la seguente procedura:

void togliPacco(ListaPacchi* l, char* cliente);

La procedura togliPacco toglie dalla lista l tutti i pacchi di maschere destinati al cliente di nome cliente.


Esercizio 3: Implementare la seguente procedura:

void spostaPacco(ListaPacchi* l);

La procedura spostaPacco deve spostare il pacco in fondo alla lista all'inizio della lista stessa.


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