Università di Roma ``La Sapienza''
Facoltà di Ingegneria
Informatica Grafica - A.A.2000/01
Corso di Laurea in Ambiente e Territorio

Esempio esercizio d'esame
(tempo a disposizione: 2 ore)

Una compagnia assicurativa registra i principali dati relativi alle polizze RC-auto e i dati relativi agli incidenti automobilistici segnalati all'assicurazione su due file.

Il file relativo agli incidenti contiene il numero di incidenti e per ogni incidente le seguenti informazioni:

Il file relativo alle polizze contiene il numero di polizze e per ogni polizza le seguenti informazioni:

In base ai dati contenuti nei due file la compagnia deve aggiornare le classi di merito associate alle polizze secondo il seguente criterio: se l'autoveicolo non è responsabile di alcun incidente, la classe di merito viene decrementata di uno (fino ad un minimo di 0), mentre per ogni incidente di cui l'autoveicolo è responsabile, la classe di merito viene incrementata di 2 (fino ad un massimo di 20).

Si richiede di risolvere i seguenti punti:

  1. Scrivere le dichiarazioni delle strutture di dati C da utilizzarsi per risolvere i punti successivi.
  2. Scrivere una funzione C che riceva come parametri il nome di un file di incidenti ed un array in cui ogni elemento è una coppia <t,n>, dove t è una targa di autoveicolo ed n è un intero positivo che denota il numero di incidenti di cui l'autoveicolo è stato responsabile che ha un valore iniziale non è significativo, e aggiorni tale valore in base alle informazioni contenute in tale file.
  3. Scrivere una funzione C che riceva come parametri il nome di un file di polizze, un array di coppie <t,n> (come definito al punto 2), e la sua dimesione, ed aggiorni le classi di merito nel file di polizze in base alle informazioni contenute nell'array.

Ad esempio, per il file di incidenti in Fig.1, la funzione al punto 2 deve costruire l'array in Fig.2, e la funzione al punto 3, ricevendo come parametro tale lista ed il nome del file di polizze in Fig.3, deve aggiornare tale file come in Fig.4.

---------------------------
Fig. 1 file di incidenti

5
EE333FF  01-01-2000  1
XX999YY  23-05-2000  0
GG444HH  12-08-2000  1
EE333FF  02-10-2000  0
EE333FF  20-12-2000  1

---------------------------
Fig. 2 array

0 |AA111BB|0|
1 |CC222DD|0|
2 |EE333FF|2|
3 |GG444HH|1|

---------------------------
Fig. 3 file di polizze

4
AA111BB 14 Anna Medi
CC222DD  1 Ben  Santi
EE333FF 17 Cat  Distratti
GG444HH 10 Don  Rossi

---------------------------
Fig.4 file di polizze aggiornato

4
AA111BB 13 Anna Medi
CC222DD  0 Ben  Santi
EE333FF 20 Cat  Distratti
GG444HH 12 Don  Rossi

---------------------------