8 marzo 2011
FONDAMENTI DI INFORMATICA (Moduli A+B) (tempo 3h) – 8 Marzo 2011
Esercizio n. 1 (punti 16)
Al fine di evitare costosi ricoveri in ospedale, l'azienda ospedaliera ha deciso di mandare le infermiere a casa dei pazienti che hanno bisogno di cure semplici. L'azienda 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:
- Paziente: nome del paziente. Dato di tipo stringa contenente al più 20 caratteri, senza spazi.
- Infermiera: nome dell'infermiera che visiterà il paziente. Dato di tipo stringa con al più 20 caratteri, senza spazi
- Giorno: Numero intero che rappresenta il giorno della settimana in cui avviene la visita (da 1 per lunedì, a 7 per domenica);
Si scriva un programma C che:
- 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 Paziente e a parità di paziente ordinato sul campo Giorno; la funzione del punto 1) riceve il puntatore a file, e restituisce l'albero creato - un puntatore di tipo tree – (ed eventuali altri parametri a vostra scelta);
- Accedendo all'albero T, si crei un array V di strutture che riporta, per ogni struttura, solo nome del Paziente e Giorno di visita (si crei V in modo che sia ordinato sul campo Paziente e a parità di Paziente sul campo Giorno); la funzione al punto 2) riceve il puntatore T e l'array V (ed eventuali altri parametri a vostra scelta);
- Accedendo all'array V, determinare qual è il paziente che riceve più visite nella settimana e stamparne nel file paziente.txt il nome; la funzione al punto 3) 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.
Facoltativo (4 punti)
Poiché è preferibile che un paziente venga visitato sempre dalla stessa infermiera, o, al limite, da poche infermiere diverse, diventa importante sapere qual è il paziente che viene visitato da più infermiere diverse.
Si modifichi il programma in modo tale da visualizzare
- il nome del paziente che viene visitato da più infermiere diverse
- il numero di infermiere diverse che visitano tale paziente.
Si strutturi l'applicazione su più file; i file devono essere almeno i seguenti:
- un file
funzioni.c
che contiene le funzioni comuni alle due versioni (esercizio base e facoltativo) - un file
main.c
che contiene ilmain
e le funzioni usate solo nell'esercizio base - un file
facoltativo.c
che contiene ilmain
e le funzioni usate solo nell'esercizio facoltativo
Si consegnino tutti i file .c più tutti i file header ritenuti necessari.