PROVA PRATICA DEL 9 FEBBRAIO 2006 - n.68

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

Gli elementi del tipo ListaParole sono liste semplici di stringhe.

typedef struct Parole{char* valore; struct Parole* next;} Parole;
typedef Parole* ListaParole;

Gli elementi del tipo ListaInt sono liste semplici di interi.

typedef struct ListaElem{int valore; struct ListaElem* next;} Elem;
typedef Elem* ListaInt;

Funzioni da implementare

  1. void scriviGrandi(char* nome_file, char* tab[], int dim);
    La procedura scriviGrandi prende in ingresso una stringa nome_file (il nome di un file in scrittura, da aprire e chiudere!) e una tabella di stringhe tab di dimensione dim, e deve scrivere sul file nome_file solo le stringhe contenute in tab di lunghezza strettamente maggiore di 5 caratteri, separandole con un singolo spazio.

  2. ListaParole Ripetute(char* tab[], int dim);
    La procedura Ripetute prende in ingresso una tabella di dimensione dim di stringhe, e deve restituire una lista delle parole presenti in tale tabella piu di una volta.

  3. ListaInt cifre(char* tab[], int dim);
    La procedura prende in ingresso una tabella tab di dimensione dim di stringhe, e restituisce una lista i cui elementi corrispondono al numero di cifre presenti nelle parole delle stringhe contenute nella tabella, nello stesso ordine (il primo elemento della lista restituita deve contenere il numero di cifre del primo elemento della tabella, e cosi' via).