Corso di Laboratorio di Informatica L-A

Esame del 15 Aprile 2002

Compito A3



È 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 memorizzi in un array di citta di nome stat_piov;

  2. [si mostri a video l'array così costruito]
  3. richieda in maniera interattiva un numero float soglia all'utente. A partire dal vettore stat_piov, si deve costruire una lista non-ordinata di interi i cui elementi sono i codici identificativi di quelle città che hanno registrato una varianza fra le piovosità superiore a soglia. Si definisce la varianza per ogni città come la sommatoria di [(pi-pm)^2], con i=1..3, dove pi è la piovosità del giorno i-esimo e pm la media aritmetica delle tre piovosità. Si chiami la lista realizzata alta_varianza;

  4. [si visualizzi la lista alta_varianza]
  5. utilizzi una procedura void visualizzaNo(lista l, char* x), specificatamente progettata, per stampare a video, i soli elementi della lista alta_varianza il cui nome di città associato è diverso da x;
    [si visualizzi il risultato di tale invocazione]
  6. FACOLTATIVO. A partire dal vettore stat_piov, costruisca una lista ordinata di stringhe i cui elementi sono i soli nomi delle città il cui codice identificativo appartiene alla lista alta_varianza. Si chiami tale lista alta_varianza_stringhe.
    [si visualizzi la lista
    alta_varianza_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).