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_COLORI 5
#define N_TAGLIE 3

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

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

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

typedef struct ListaColori{
Colore colore;
struct ListaColori* prossimo;
} ListaColori;


Esercizio 1: Implementare la seguente funzione:

int articoli_per_taglia(Magazzino* m, Taglia t);

La funzione articoli_per_taglia deve restituire il numero di capi presenti nel magazzino m di taglia t.


Esercizio 2: Implementare la seguente funzione:

ListaColori* colori_sgraditi(Magazzino* m);

La funzione colori_sgraditi restituisce la lista dei colori che sono stati meno richiesti, cioè quelli più frequenti fra tutti i capi presenti nel magazzino m.


Esercizio 3: Implementare la seguente funzione:

Magazzino* saldi(Magazzino** m);

La funzione saldi controlla quali sono gli articoli del magazzino m per i quali almeno esistono al più 3 capi, li rimuove da m, e li mette in una lista di articoli (quella che verrà restituita dalla funzione) che conterrà intuitivamente gli articoli che verranno messi in svendita ai prossimi saldi.

 


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

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