FONDAMENTI DI INFORMATICA II e modulo B (tempo 2h) – 23 Gennaio 2012

Esercizio n. 1 (punti 20)

Un grossista di materiale termoidraulico programma il giro di visite dei suoi rappresentanti, inviandoli settimanalmente presso gli idraulici installatori. Il grossista ha un file di testo visite.txt che contiene le visite che verranno effettuate durante la settimana (al massimo 100); per ogni visita si hanno:

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

  1. A partire dal file, crei un albero binario di ricerca T in memoria centrale (supponendo che la memoria heap sia sufficiente) che riporta il contenuto del file, ordinato sul campo Rappresentante e a parità di rappresentante ordinato sul campo Giorno; la funzione del punto a) riceve il puntatore a file, e restituisce l'albero creato - un puntatore di tipo tree – (ed eventuali altri parametri a vostra scelta);

  2. Accedendo all'albero T, si crei un array V di strutture che riporta, per ogni struttura, nome del Rappresentante, Giorno e nome dell'idraulico (si crei V in modo che sia ordinato sul campo Rappresentante e a parità di Rappresentante sul campo Giorno); la funzione al punto b) riceve il puntatore T e l'array V (ed eventuali altri parametri a vostra scelta);

  3. Stampi il contenuto dell'array V su un file di uscita output.txt; la funzione al punto c) riceve il l'array V e il puntatore al file aperto in uscita (ed eventuali altri parametri a vostra scelta).

Per chi svolge il compito A+B:

  1. Accedendo all'array V, determinare qual è il rappresentante che esegue più visite nella settimana e stamparne nel file best.txt il nome; la funzione al punto d) riceve l'array e il puntatore al file aperto in uscita.

È possibile utilizzare librerie C (ad esempio per le stringhe). Nel caso si strutturi a moduli l'applicazione qualunque libreria utente va riportata nello svolgimento.