Corso di Fondamenti di Informatica - A.A. 2000/2001
Corsi di Laurea in Ingegneria Elettronica (V.O.) e
Ingegneria delle Telecomunicazioni (V.O.)

Appello straordinario del 21 gennaio 2002 - 1a prova scritta

tempo a disposizione: 2 ore

Problema 1 (18 punti)

Una agenzia di viaggi memorizza su di un file di testo le temperature di località di interesse. Ogni linea del file contiene le seguenti informazioni riguardo ad una località:

Ad esempio un file di temperature potrebbe contenere:
londra              15
vienna              18
roma                32
parigi              22
amsterdam           12
madrid              38

Si chiede di risolvere i seguenti punti:

  1. Progettare le strutture dati C (risp. Pascal) da utilizzarsi per risolvere i punti seguenti. L'uso di eventuali variabili globali va opportunamente motivato.
  2. Progettare una funzione C (risp. procedura o funzione Pascal) che, preso come parametro il nome di un file di temperature, costruisca e restituisca all'unità chiamante una lista di record contenente un elemento per ogni località nel file. Ogni elemento della lista deve contenere il nome della località ed un codice, stabilito in base alla temperatura della località al seguente modo: L'ordine degli elementi nella lista è irrilevante.
  3. Progettare una funzione C (risp. procedura o funzione Pascal) che, presi come parametri una lista come quella costruita al punto (2) ed il nome di un file, scriva sul file, una per riga, le località con il loro codice per la temperatura, ordinate secondo tale codice. Devono cioè essere scritte sul file prima tutte le località calde (`c'), poi tutte quelle temperate (`t'), ed infine tutte quelle fredde (`f'). L'ordine delle località aventi lo stesso codice di temperatura è irrilevante. Inoltre, la funzione deve cancellare la lista passata come parametro, liberando la memoria occupata dai suoi elementi.

    Ad esempio, per il file di temperature di sopra, il file prodotto potrebbe contenere:

    roma                c
    madrid              c
    parigi              t
    londra              f
    vienna              f
    amsterdam           f