Salta ai contenuti. | Salta alla navigazione

Strumenti personali

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).

 

  1. Nel main , si invochino due procedure o funzioni di lettura (punto 2), una di elaborazione (punto 3) ed una di stampa (punto 4)
  2. 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.

  3. 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
  4. 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 il main e le funzioni usate solo nell'esercizio base
  • un file facoltativo.c che contiene il main e le funzioni usate solo nell'esercizio facoltativo
  • un file funzioni.c che contiene le funzioni comuni

più tutti i file header ritenuti necessari.