Sei sulla pagina 1di 2

Fondamenti di Informatica

Prof. M. Gavanelli, E. Lamma


21 Settembre 2023

NOTA BENE: Si consegni il codice in un UNICO file sorgente con NOME


e COGNOME nel codice come commento. Si consegni anche ogni file di uscita
generato (quello per esame B, ed eventualmente quello per esame A+B). È pos-
sibile utilizzare librerie C (ad esempio per le stringhe).

Esercizio (Punti 15 su 31) (1h e 15 min)


Un file di tipo binario, parole1.bin contiene alcune parole della lingua italiana.
Il file non ‘e ordinato e ogni parola può ripetersi nel file. Le parole sono al più
di 20 caratteri, compreso il terminatore.
Si realizzi un programma C, organizzato in almeno due funzioni, rispettiva-
mente dedicate a:

• costruire in memoria centrale una lista L, ordinata sul campo parola, che
riporta ogni parola del file (anche con ripetizioni della parola); la fun-
zione1 riceve come parametri il puntatore al file, il più eventuali parametri
a scelta, e restituisce il puntatore alla radice della lista L;
• accedendo a L, stampi a video l’elenco ordinato delle parole contenute in
L; questa funzione (funzione2) riceve il puntatore radice L, più eventuali
parametri a scelta, e restituisce void.

Per chi svolge il compito A+B (Ulteriori punti 24


su tot. di 62 per A+B; tempo +30 min):
Si inseriscano le prime 10 parole del file parole1.bin in un vettore V (di
dimensione 20). Nota bene: il file parole1.bin ne contiene almeno 10.
Ordinare il vettore V tramite una opportuna chiamata della funzione qsort
e stampare poi su file di testo, outputAB.txt, da consegnare con il codice
sorgente, tutte le parole del vettore V ordinato; questa funzione (funzioneAB)
riceve come parametri il vettore V e il puntatore al file parole1.bin, più
eventuali parametri a scelta, e restituisce void.

1
NOTA BENE: Si consegnino i sorgenti, eseguibile e i file di uscita generati.
È possibile utilizzare librerie C (ad esempio per le stringhe). Nel caso si
strutturi a moduli l’applicazione qualunque libreria utente va riportata nello
svolgimento.

Esercizio 2 (Punti 3 su 31) (+15 min)


NOTA BENE: Per questo esercizio si consegni la soluzione in un file complex.txt.
Sia data la seguente funzione fun che riceve un albero binario di ricerca di
interi T1 alla sua chiamata fun(T1) e restituisce un intero:

int fun(int i, tree T)


{
if (T==NULL) return 0;
else
if (i==T->value) return 1;
else if (i<T->value) return fun(i,T->left);
else return fun(i,T->right);
}

Si indichi cosa fa la funzione fun e se è ricorsiva o iterativa. Nell’ipotesi che


l’albero T1 abbia N elementi e i NON appartenga a T1, si valuti la complessità
asintotica come numero di test i==T->value, motivando adeguatamente la
risposta.

Potrebbero piacerti anche