Corso di Laboratorio di Informatica L-A

Esame del 15 Aprile 2002

Compito A4




È 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. chieda in maniera interattiva all'utente di inserire un numero float soglia. Il programma deve leggere i dati di piovosità dal file pioggia.txt e inserirli in un array di citta di nome media_alta, se e solo se la media aritmetica della piovosità della città nei tre mesi è maggiore di soglia;

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

  4. [si visualizzi la lista alta_piov]
  5. utilizzi una procedura void spezza(lista alta_piov, lista newL1, lista newL2, int x), specificatamente progettata, che dato il numero intero x va a creare due nuove liste newL1 e newL2, la prima che contiene tutti gli elementi di alta_piov  minori o uguali a x, la seconda che contiene tutti gli elementi di alta_piov strettamente maggiori di x; [si visualizzino le liste newL1 e newL2]
  6. FACOLTATIVO. A partire dal vettore media_alta, costruisca una lista non-ordinata di stringhe i cui elementi sono i nomi delle città che hanno avuto nel mese di Gennaio piovosità superiore a soglia. Si chiami tale lista gennaio_piovoso_stringhe.

  7. [si visualizzi la lista gennaio_piovoso_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).