PROVA PRATICA DEL 11 luglio 2006 - n.81

Indicazioni per la consegna

Nella consegna della prova pratica e' importante che gli studenti rispettino le seguenti indicazioni. Se tali indicazioni non vengono rispettate, c'e' il rischio che un esercizio, pur essendo stato svolto correttamente, venga valutato come errato.

E' importante che il codice consegnato includa solamente lo svolgimento della procedura richiesta. A tale codice infatti vengono automaticamente attaccati la definizione delle strutture dati e una procedura main per testare quanto consegnato.

Ad esempio, prendiamo un esercizio che utilizza le seguenti strutture dati:

typedef enum Uno {a,b,c} Uno;

typedef struct Due{
int a[3];
int b[3];
} Due;

Se a partire da queste strutture dati l'esercizio chiede di consegnare una procedura int proc (Uno u, Due d), lo studente dovra' consegnare SOLAMENTE il seguente codice:

/*Eventuali procedure di supporto e variabili globali
utilizzate per lo svolgimento dell'esercizio*/
int proc (Uno u, Due d){
bla bla bla /* codice della procedura */
}

E' importante che NON vengano inseriti nella consegna dell'esercizio le istruzioni #include <...>, #define ... , la procedura main e la definizione delle strutture dati.

Attenzione! Nella consegna di ogni esercizio, dovete inserire TUTTE le eventuali procedure o funzioni di supporto che sono necessarie per la verifica automatica di quell'esercizio (se riutilizzate una procedura definita in un altro esercizio, dovete reinserirla!).

Tema d'esame n. 81

Gli elementi del tipo ListaAnagrafecsono liste semplici di dati anagrafici (nome, cognome, età)..

typedef struct Anagrafe{char nome[20]; char cognome[20]; int anni; struct Anagrafe* next;} Anagrafe;
typedef Anagrafe* ListaAnagrafe;

Funzioni da implementare

  1. ListaAnagrafe togliOmonimi(ListaAnagrafe lista);
    La funzione togliOmonimi deve restituire la lista passata privata di eventuali omonimi (elementi con lo stesso nome, lo stesso cognome e la stessa età).
  2. double media(ListaAnagrafe lista, char iniziale);
    La funzione deve restituire l'età media di tutte le persone descritte nella lista i cui cognomi iniziano con il carattere iniziale.
  3. ListaAnagrafe unisci(ListaAnagrafe lista1, ListaAnagrafe lista2);
    La funzione prende in ingresso due liste prive di omonimi ed ordinate lessicograficamente, e restituisce una lista ordinata lessicograficamente che contiene tutti gli elementi che appartengono ad esse.