24 gen 2013
Fondamenti di Informatica modulo A - Compito B
Prof. Marco Gavanelli
24 gennaio 2013
Esercizio (punti 16)
Un file binario pazienti.bin contiene un elenco di nominativi di pazienti di un'Azienda Ospedaliera (al massimo 100). Per ogni paziente, sono riportati
- cognome e nome (stringhe di 20 char, compreso il terminatore)
- e il codice fiscale (stringa di 16 char, più il terminatore).
I codici fiscali sono tutti diversi tra loro.
Un secondo file, reparto.txt (di testo), memorizza i giorni di ricovero (max 200) dei pazienti. Per ciascun ricovero sono riportate
- data (nel formato gg/mm/aa)
- e il nominativo di un paziente (cognome e nome, stringhe di 20 char).
Ogni paziente compare una sola volta nel file pazienti.bin , ma può comparire zero o più volte in reparto.txt.
Si desidera sapere, per ciascun paziente, quanti giorni è stato ricoverato (ovvero il numero di volte in cui compare nel file reparto.txt).
Si scriva un programma C strutturato come segue. Lo studente può aggiungere tutte le funzioni che desidera (ed è consigliabile farlo), e può aggiungere parametri alle funzioni richieste (se lo ritiene necessario).
- Nel
main
, si invochino due procedure o funzioni di lettura (punto 2), una di elaborazione (punto 3) ed una di stampa (punto 4) - Si scrivano due procedure o funzioni dedicate a leggere i due file e portarne il contenuto in opportuni array di strutture.
Si stampino a video i due array.
- Si scriva una procedura o funzione di elaborazione che prende come parametri i due array letti al punto 2 (più, eventualmente, altri parametri) e fornisce al
main
un array che contiene, per ciascun paziente- nome e cognome
- numero dei giorni di ricovero
- Si mostri a video l'array prodotto al punto 3.
Facoltativo (punti 4)
Si modifichi il programma in modo che
- nelle funzioni di lettura, inserisca i pazienti nei due array ordinati per cognome (e, a parità di cognome, per nome)
- nelle funzioni successive, sfrutti il fatto che gli array sono ordinati per rendere il programma più efficiente: lo studente utilizzi gli algoritmi più efficienti che conosce.
Si consegnino i file:
- un file
COGNOME.c
(dove COGNOME va sostituito col cognome dello studente) 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 - un file
funzioni.c
che contiene le funzioni comuni
più tutti i file header ritenuti necessari.