PROVA PRATICA DEL 23 Gennaio 2007 - n.56

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 */
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. 56

Gli elementi del tipo ListInt sono liste semplici di interi:

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

Funzioni da implementare

  1. int StessiCaratteri(char* s, char* t);
    La funzione deve verificare se i caratteri contenuti nella stringa s sono tutti contenuti anche nella stringa t e viceversa (restituisce 1 se questa condizione verificata, e restituisce 0 altrimenti).
    Esempio: StessiCaratteri("amare","rema") restituisce 1.

  2. ListInt Fuori(ListInt a, ListInt b);
    La funzione restituisce una nuova lista che contiene gli elementi in a che sono (strettamente) minori del minimo elemento di b o (strettamente) maggiori del massimo degli elementi di b.
    Esempio: se gli elementi della lista a sono 3,2,9,0,-7, e gli elementi della lista b sono -2,3,1 la funzione deve restuire la lista che ha come elementi -7 e 9.

    .
  3. int FuoriDiagonali(int a[N][N]);
    La funzione restituisce la somma degli interi che non appartengono alle diagonali principali della tabella.
    Ad esempio, se si applica la funzione alla tabella
    1 2 3 4
    3 5 6 7
    9 8 5 2
    3 2 4 1

    il valore restituito sarà 2+3+3+9+7+2+4+2=32