FONDAMENTI DI INFORMATICA (II, modulo B, A+B)
(2h, punti 30/30) 22 Giugno 2011


Esercizio 2: PROGRAMMAZIONE IN C (punti 20)

Un file di testo (film.txt) contiene record relativi a produzioni cinematografiche (si sa che sono al massimo 30). Ogni linea riporta, per ciascun progetto cinematografico, un codice del film (valore numerico intero), nome del regista, budget richiesto (valore numerico intero). Un secondo file testo (preventivi.txt) riporta le spese preventivate da ciascuna produzione, sono riportati il codice del film, il nome del produttore, la sua offerta di spesa (valore numerico intero). Per lo stesso progetto cinematografico ci possono essere state più offerte di produttori diversi, e ve ne è almeno una.

I nomi (di regista e produttore) sono stringhe di al massimo 20 caratteri.

Si scriva un programma C organizzato in (almeno tre) funzioni invocate dal main e dedicate rispettivamente a:

  1. Per ogni record letto dal primo file, cerchi nel secondo file l'elemento che ha lo stesso codice film e l'offerta di spesa maggiore e restituisca una struttura composta dai campi: codice del film, nome del regista, budget richiesto, nome del produttore (che ha fatto l'offerta maggiore) e la sua offerta. Tale funzione ha come parametri un puntatore a file e un elemento; restituisce un tipo struct da definire in base ai campi indicati e richiesti;

  2. Inserisca poi la struttura restituita in un albero binario di ricerca T, ordinato sul campo codice; tale funzione ha come parametri la struttura restituita dal punto precedente, il puntatore all'albero T (più eventuali altri a scelta) e restituisce il puntatore all'albero creato;

  3. Stampi ordinatamente in base al codice del film il contenuto dell'albero T su un file di tipo testo (OUTPUT.TXT, da consegnare con i sorgenti ed eseguibile), che riporta, per ciascuna riga, il codice del film, il nome del regista, il budget richiesto, il nome del produttore (che ha fatto l'offerta maggiore) e la sua offerta. Tale funzione ha come parametri il puntatore al file di uscita e il puntatore all'albero T (più eventuali altri a scelta) e restituisce void.

  4. Per chi svolge il compito A+B: Inserisca in un vettore V ordinato sul campo codice film gli elementi dell'albero T che hanno il campo budget maggiore del campo offerta. Tale funzione ha come parametri il puntatore all'albero T e il vettore V (più eventuali altri a scelta) e restituisce un int che rappresenta il numero di elementi inseriti in V (facoltativo: si stampi a video poi il contenuto del vettore).