Corso di Programmazione - Prova Pratica - 15 gennaio 2008


E' Carnevale, e l'esame di oggi vi chiede di gestire una fabbrica di frittelle.
Per fare una confezione di frittelle ci vogliono:
1 etto di farina, 3 uova, 2 cucchiai di olio, e 3 cucchiai di zucchero.
Ogni confezione di frittelle, una volta prodotta, sarà inserita in un pacco (che può contenere più confezioni) etichettato con il nome del cliente ed inserita in una lista di pacchi pronti per essere ritirati.
Useremo i seguenti tipi


typedef struct {
int farina; /* etti di farina */
int uova; /* numero uova */
int olio; /* cucchiai di olio */
int zucchero; /* cucchiai di zucchero */
} Dispensa;


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


typedef Pacco* ListaPacchi;

Esercizio 1: Implementare la seguente funzione:

int produci(Dispensa* d);

La procedura produci restituisce il numero massimo di confezioni di frittelle che si possono produrre con le quantità presenti nella dispensa *d. All'uscita della funzione, i valori dei campi di *d dovranno ovviamente essere decrementati in ragione degli ingredienti effettivamente consumati.


Esercizio 2: Implementare la seguente procedura:

ListaPacchi aggiungiPacco(ListaPacchi l, char* cliente, int numero_confezioni);

La procedura aggiungiPacco aggiunge in coda alla lista l un nuovo pacco, destinato al cliente di nome cliente, e contenente numero_confezioni confezioni di frittelle.


Esercizio 3: Implementare la seguente procedura:

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

La procedura ritiraPacco deve eliminare dalla lista l tutti i pacchi corripondenti al cliente di nome cliente presenti nella lista.


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