LABORATORIO DI INFORMATICA L-A
APPELLO DEL 16/1/2003 - PRIMO TURNO
ESERCIZIO 1

Sono dati due file di testo, denominati STAZIONI.TXT e RILEVAZ.TXT.

Il file STAZIONI.TXT contiene un elenco di stazioni di rilevamento della temperatura. Il file contiene un massimo di 10 righe e per ogni riga abbiamo il nome della stazione di lettura. I nomi delle stazioni sono lunghi al massimo 10 caratteri e non contengono spazi.

Il file RILEVAZ.TXT contiene un elenco di rilevazioni di temperatura (massimo 50) provenienti dalle varie stazioni di rilevamento.

Per ogni rilevazione abbiamo

- Un numero di stazione (numero intero)
- Un valore di temperatura (numero intero) 

Si chiede di scrivere un programma C, denominato meteo, con le seguenti caratteristiche:

Il programma dovrà essere suddiviso in 3 file.

  1. funzioni.h: dovrà contenere le definizioni dei tipi e le dichiarazioni delle funzioni sotto descritte
  2. funzioni.c: dovrà contenere le definizioni delle funzioni dichiarate in funzioni.h
  3. main.c: dovrà contenere solo la funzione main()

Il programma dovrà comprendere:

Tipi di strutture

  1. stazione che contiene i dati di una stazione di rilevamento (un nome e un valore intero)
  2. stazioni che contiene un array di strutture di tipo stazione e il numero di stazioni effettivamente lette.
  3. rilevazione che contiene i dati di una rilevazione di temperatura.
  4. rilevazioni che contiene un array di strutture di tipo rilevazioni e il numero di rilevazioni effettivamente lette.

Funzioni e procedure

  1. funzione denominata leggistaz():  dato il nome di un file riempie una struttura di tipo stazioni contenente le righe lette dal file. La funzione restituisce 1 se l'operazione è andata a buon fine, altrimenti restituisce 0. 
  2. funzione denominata leggiril(): dato il nome di un file, riempie una struttura di tipo rilevazioni l file. La funzione restituisce 1 se l'operazione è andata a buon fine, altrimenti restituisce 0.
  3. procedura denominata elabora(): sulla base di una struttura di tipo rilevazioni  determina il numero di numero di rilevazioni per ogni stazione e mette tali valori in una  struttura di tipo stazioni 
  4. funzione denominata scrivi() che scrive in un file di testo, il cui nome viene passato come parametro, una riga per ogni stazione di rilevamento. Ogni riga avrà il seguente formato, 

    - Numero della stazione
    - Uno spazio
    - Nome della stazione
    - Uno spazio
    - Numero di rilevazioni per tale stazione

    La funzione restituisce 1 se l'operazione è andata a buon fine, altrimenti restituisce 0.

Il programma, utilizzando le suddette funzioni, dovrà:

  1. Leggere il file STAZIONI.TXT  - usando la funzione leggistaz() ) segnalando a video eventuali problemi
  2. Leggere il file RILEVAZ.TXT  - usando la funzione leggiril() ) segnalando a video eventuali problemi
  3. Usare la procedura elabora() per determinare il numero di rilevazioni per ogni stazione
  4. Scrivere nel file di testo STAT.TXT, usando la funzione scrivi(), il risultato dell'elaborazione fatta dalla procedura elabora(), segnalando a video eventuali problemi.