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 ListaColori{
Colore colore;
struct ListaColori* prossimo;
} ListaColori;


Esercizio 1: Implementare la seguente funzione:

int capi_venduti(Magazzino* inizio_giornata, Magazzino* fine_giornata);

La funzione capi_venduti deve restituire il numero di capi venduti nella giornata, facendo il confronto tra il numero di capi presenti nel magazzino inizio_giornata con quelli di fine_giornata.


Esercizio 2: Implementare la seguente funzione:

ListaColori* fashion_colors(Magazzino* m);

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


Esercizio 3: Implementare la seguente funzione:

Magazzino* svendita(Magazzino** m);

La funzione svendita controlla quali sono gli articoli del magazzino m per i quali almeno una taglia è esaurita, 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.

 


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

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