FONDAMENTI DI INFORMATICA II e modulo B (tempo 2 h) - 9 Febbraio 2012

 

Esercizio n. 2 (punti 20)

 

Un file di testo  viaggi.txt  memorizza  le prenotazioni dei viaggi in treno per alcuni commessi viaggiatori. Ciascuna prenotazione contiene

Un secondo file di testo, percorsi.txt contiene le lunghezze chilometriche delle varie tratte. Ciascuna tratta contiene:

 

Si  realizzi un programma C, organizzato in almeno tre funzioni, rispettivamente dedicate a:

a)      costruire un albero binario di ricerca, ordinato sul campo nome viaggiatore, che riporta in ciascun nodo: nome viaggiatore, stazione di partenza, stazione di arrivo, lunghezza della tratta (intero). La funzioneA riceve i puntatori ai due file e restituisce il puntatore all'albero T;

b)     stampare ordinatamente il contenuto di T in un file testo di uscita (>output.txt); la funzioneB riceve il puntatore al file di uscita e il puntatore all'albero T, e restituisce void;

c)      previo inserimento da input  di un  nome viaggiatore letto nel main, accedendo a T determinare il totale dei chilometri che il viaggiatore deve  percorrere. La funzione C riceve il nome del viaggiatore letto da main, il puntatore ad albero T, e restituisce un intero.

 

Ad esempio, se il file viaggi.txt  contiene:

Rossi

Bologna

Firenze

Bianchi

Palermo

Catania

Rossi

Firenze

Roma

Verdi

Padova

Venezia

Verdi

Ferrara

Padova

Bianchi

Catania

Enna

Bianchi

Enna

Palermo

 

e il file percorsi.txt  contiene:

Bologna

Firenze

80

Palermo

Catania

80

Firenze

Roma

150

Padova

Venezia

40

Ferrara

Padova

60

Catania

Enna

60

Enna

Palermo

100

per il nome "Rossi" la funzioneC restituisce  un totale di chilometri pari a 230.

 

Per chi svolge il compito A+B (+30 min, tot 2,5 h):

Si  carichino i dati dell'albero T in un vettore di strutture (i primi 10, le prenotazioni sono al massimo 100), lo si ordini  sul campo lunghezza tratta e lo si stampi in uscita sul file outputAB.txt.

 

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.