Corso di Programmazione - Prova Pratica - 10 gennaio 2001


Stiamo rimettendo a posto gli addobbi natalizi, in particolare l'albero di natale. Vi avevamo appeso palline di 3 colori diversi: rosso, blu e oro, una per ogni ramo dell'albero. Le palline hanno dimensione diversa (grande, media o piccola). Vogliamo raccogliere le palline tenendole separate in tre scatole diverse, di dimensione adatta.

L'albero di natale sarà un puntatore ad un valore di tipo ChristmasTree. I nodi dell'albero hanno un valore del tipo enumerazione Colore. Le scatole saranno valori di tipo Scatola, ovvero record il cui primo campo contiene il colore delle palline contenute, ed il terzo campo è una tabella i cui elementi (di tipo Dimensione) corrispondono alla dimensione di ciascuna delle palline di quel colore tolte dall'albero (essendo una tabella dinamica, dobbiamo dichiararla di tipo Dimensione*, ed il campo size_tabella dice la dimensione di questa tabella).

typedef enum Colore {rosso, blu, oro} Colore;

typedef enum Dimensione {grande, media, piccola} Dimensione;

typedef struct ChristmasTree{

Colore pallina;
Dimensione dimensione;

struct ChristmasTree *sinistro;

struct ChristmasTree *destro;

}ChristmasTree;

typedef struct Scatola{

Colore colore;
int size_tabella;
Dimensione *tabella;

}Scatola;


Esercizio 1: Implementare la seguente procedura:

int conta(ChristmasTree *albero, Dimensione dim);

La funzione conta deve restituire il numero totale di palline di dimensione dim presenti nell'albero albero.


Esercizio 2: Implementare la seguente procedura:

void stampa(Scatola scatola);

La procedura stampa, dato un valore di tipo Scatola deve produrre una stampa di questo genere:

<colore palline>
GRANDI: <numero palline grandi nella scatola>
MEDIE : <numero palline medie nella scatola>
PICCOLE: <numero palline piccole nella scatola>


Esercizio 3: Implementare la seguente procedura:

Scatola inscatola(ChristmasTree *albero, Colore colore);

La funzione inscatola prende in ingresso un alberodi natale ed un colore, e deve restituire un valore di tipo Scatola che "contenga" le palline di quel colore presenti nell'albero.


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