Corso di Programmazione - Prova Pratica - Secondo Appello - 24 gennaio 2001


L'esame di oggi ha a che fare con un magazzino di indumenti. Un magazzino, di tipo puntatore a Magazzino, lo possiamo pensare come una lista semplice di valori di tipo Articolo. Ognuno di tali elementi sarà costituito dal codice che identifica l'articolo, un colore, e, in corrispondenza di ogni taglia (da M a XL), il numero di capi di tale articolo presenti nel magazzino stesso.

#define N_TAGLIE 3
#define N_COLORI 5

typedef enum Taglia {M,L,XL} Taglia;
typedef enum Colore {rosso, giallo, blu, grigio, verde} Colore;

typedef struct Articolo {
char* codice;
Colore colore;
int capi[N_TAGLIE];
} Articolo;

typedef struct Magazzino {
Articolo articolo;
struct Magazzino* prossimo;
} Magazzino;

typedef struct ListaCodici{
char* codice;
struct ListaCodici * prossimo;
} ListaCodici;

typedef struct ListaCodiceColore{
char* codice;
Colore colore;
struct ListaCodiceColore * prossimo;
} ListaCodiceColore;


Esercizio 1: Implementare la seguente funzione:

double media(Magazzino* m);

La funzione media deve restituire il numero medio di capi per articolo presenti nel magazzino m.


Esercizio 2: Implementare la seguente funzione:

ListaCodici* articoli_esauriti(Magazzino* m);

La funzione articoli_esauriti restituisce la lista dei codici degli articoli che sono stati completamente venduti (quelli per i quali nel magazzino m non ci sono pił capi di nessuna taglia).


Esercizio 3: Implementare la seguente funzione:

ListaCodiceColore* nuova_produzione(Magazzino** m);

La funzione nuova_produzione controlla quali sono gli articoli in m che hanno al pił 1 capo presente, li rimuove dal magazzino m, e mette le rispettive coppie codice-colore in una lista (quella restituita dalla funzione, di tipo ListaCodiceColore) che rappresenta la lista degli articoli che dovranno nuovamente essere prodotti per rimpinguare il magazzino.


La modalità di consegna dell'esame è analoga a quella delle esercitazioni durante il corso: è sufficiente inviarlo come esercitazione numero 203.

Bisogna inserire esclusivamente la definizione delle funzioni richieste ed eventuali procedure o funzioni ausiliarie, per consentirne la correzione automatica.

Per superare la prova è necessario che almeno uno dei tre esercizi sia corretto (ovvero che la compilazione abbia successo e che l'esecuzione soddisfi la specifica data).