PROVA PRATICA DEL 7 GIUGNO 2005

Tema 31

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 <...>, la procedura main e la definizione delle strutture dati.

Tema d'esame n. 31

Un numero si dice di Harshad se Ŕ divisibile per il numero ottenuto sommando le sue cifre.
Per esempio, il numero 1729 ha questa proprietÓ, infatti la somma delle sue cifre Ŕ 1+7+2+9=19, e 1729 Ŕ divisibile per 19.
Anche il numero 6174 ha questa proprietÓ, infatti Ŕ divisibile per 6+1+7+4=18.

Si considerino i seguenti tipi (dove N Ŕ una costante simbolica) per rappresentare tabelle e liste semplici di interi.

typedef int Sequenza[N]

typdef struct ListaElem{
int valore;
struct ListaElem* next;
} ListaElem;

typedef ListaElem* ListaInt;

Funzioni da implementare

  1. int harshad(int n);
    Restituisce 1 se n Ŕ un numero di Harshad, e restituisce 0 altrimenti.

  2. ListaInt seleziona_harshad(Sequenza s, int dim);
    Restituisce una lista semplice di interi i cui elementi sono i numeri della sequenza s che sono di Harshad, dove dim rappresenta il numero di elementi della sequenza da considerare.

  3. int h_quanti_sono(ListaInt l);
    Restituisce il valore intero che esprime quanti sono i numeri della lista l che sono numeri di Harshad