Corso di Laboratorio di Informatica L-A

Esame del 15 Aprile 2002

Compito A2





È dato un file di testo pioggia.txt che contiene le statistiche di piovosità relative ad un numero di città imprecisato, comunque non superiore a 20, una città per riga. Più precisamente, ogni riga contiene, nell'ordine:

Si chiede di scrivere un programma C che, dopo aver definito una struct citta nel modo appropriato rispetto a quanto specificato sopra:
  1. legga i dati di piovosità dal file pioggia.txt e li inserisca in un array di cittadi nome valori_medi, se e solo se i millimetri di pioggia caduti nel mese di Febbraio sono maggiori o uguali a quelli caduti in Gennaio e minori o uguali a quelli caduti in Marzo nella stessa città;

  2. [si mostri a video l'array così costruito]
  3. a partire dal vettore valori_medi, costruisca una lista di interi i cui elementi sono i codici identificativi di tutte le città incluse nel vettore. Si chiami tale lista estremi_esclusi;

  4. [si visualizzi la lista estremi_esclusi]
  5. utilizzi una funzione void visualizzaNome(lista estremi_esclusi, citta valori_medi[], int x), specificatamente progettata, che dato il numero intero x, va a verificare se x appartiene alla lista estremi_esclusi e, in caso affermativo, stampa a video il nome della città a cui corrisponde quel codice identificativo, ovviamente sfruttando l'informazione ottenuta sulla posizione di x all'interno della lista.

  6. [si visualizzino i risultati dell'invocazione della funzione]
  7. FACOLTATIVO. A partire dal vettore valori_medi, costruisca una lista non-ordinata di stringhe i cui elementi sono i nomi delle città il cui codice identificativo appartiene alla lista estremi_esclusi. Si chiami tale lista estremi_esclusi_stringhe.

  8. [si visualizzi la lista estremi_esclusi_stringhe]
E' possibile utilizzare librerie C (ad esempio per stringhe) e si devono utilizzare le librerie sulle liste presentate a lezione (list.h, list.c, element.h).