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 procedura:

void inventario(Magazzino* m, int* somma, double* media);

La procedura inventario prende in ingresso un puntatore a magazzino m, e l'indirizzo di due variabili (somma e media) alle quali deve assegnare, rispettivamente, il numero totale di capi presenti nel magazzino m e la media di capi per articolo.


Esercizio 2: Implementare la seguente funzione:

ListaCodici* venduti(Magazzino* m);

La funzione venduti 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* richiedi(Magazzino** m);

La funzione richiedi 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 richiesti alla produzione per rimpinguare il magazzino.


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

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).