Due file di tipo binario,
parole1.bin
e
parole2.bin
, contengono alcune parole della lingua italiana. I due file non sono ordinati e ogni parola può
ripetersi sia in un file sia in entrambi i file.
Le parole sono al più di 20 caratteri, compreso il terminatore.
Si realizzi un programma C, organizzato in almeno due funzioni, rispettivamente dedicate a:
costruire in memoria centrale un albero binario di ricerca T, ordinato sul campo parola, che riporta ogni parola del primo file che non compare nel secondo file.
Nota bene: la parola può essere inserita anche più volte nell'albero; la funzioneA riceve come parametri i puntatori a file, più eventuali parametri a scelta, e restituisce il puntatore radice dell'albero T;
accedendo a T, conti il numero di nodi poi stampi su un file di uscita, uscita.txt, il numero di nodi.
Ad esempio, se l'abero ha 50 nodi , il file dovrà contenere
Nodi: 50
Il file uscita.txt va consegnato con il codice sorgente. Questa funzione (funzioneB) riceve il puntatore radice dell'albero T, il puntatore al file, più eventuali parametri a scelta, e restituisce void.
Per chi svolge il compito A+B (Ulteriori punti 20 su tot. di 60 per A+B; tempo +45 min; tot 2,5 h):
Nel file
parole1.bin
ci sono almeno 10 parole distinte tra loro.
Si inseriscano le prime 10 parole distinte di questo file in un vettore V (di dimensione 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 che compaiono anche nell'albero T;
questa funzione (funzioneC) riceve come parametri il vettore V e il puntatore al nodo radice dell'albero,
più eventuali parametri a scelta, e restituisce void.
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.
File translated from
TEX
by
TTH,
version 4.03. On 1 Jul 2014, 10:30.