Università di Roma "La Sapienza"

Facoltà di Ingegneria

Corso di Fondamenti di Informatica

Corso di Laurea: Ambiente e Territorio

Appello del 15-1-1999

Esercizio 1 (18 punti)

In una centrale per rilevazioni meteorologiche sita in prossimità del mare è installato un dispositivo che acquisisce tre volte al giorno, ad orari prestabiliti, temperatura, umidità relativa e pressione atmosferica. La centralina è collegata ad un personal computer che, ricevendo in ingresso tali dati, li memorizza in un file di testo come segue:

Le rilevazioni sono memorizzate nel file (una per riga) in ordine temporale crescente (dalla più vecchia alla più recente).

  1. Scrivere in C le dichiarazioni dei tipi e delle eventuali variabili globali da utilizzarsi per risolvere i due punti successivi (le dichiarazioni locali potranno essere direttamente specificate nello svolgimento dei punti successivi).
  2. Scrivere una funzione C che, ricevendo come parametro il nome di un file contenente le rilevazioni effettuate durante il 1998, costruisca, restituendola in uscita, una struttura di dati consistente in un vettore di 60 elementi, in cui l'i-esimo (i=0,…,59) è un puntatore a una lista i cui elementi sono tutte e sole le rilevazioni contenute nel file di ingresso contraddistinte da una temperatura nell'intervallo [i-10,i-9) (ogni elemento della lista contiene le seguenti informazioni: numero, data, numero giornaliero, temperatura, umidità relativa e pressione atmosferica).
  3. Scrivere una funzione C che, ricevendo come parametri la struttura di dati costruita al punto precedente, il nome di un file e un razionale t, memorizzi nel file le date dei giorni in cui è stata rilevata almeno una volta una temperatura pari o superiore a t.

Le figure seguenti illustrano un esempio.

...

571

10071998

1

22.2

0.89

1049.2

572

10071998

2

28.1

0.65

1049.1

573

10071998

3

26.5

0.78

1049.2

574

11071998

1

23.6

0.88

1049.0

575

11071998

2

31.1

0.88

1049.2

576

11071998

3

28.1

0.90

1050.0

577

12071998

1

24.7

0.86

1050.1

578

12071998

2

32.3

0.92

1050.6

579

12071998

3

30.8

0.93

1050.6

580

13071998

1

24.0

0.88

1031.2

581

13071998

2

27.1

0.76

1022.1

582

13071998

3

25.2

0.66

1020.9

583

14071998

1

20.0

0.60

1023.4

584

14071998

2

30.2

0.58

1024.1

585

14071998

3

26.2

0.60

1024.0

...

Fig. 1: frammento di file in ingresso alla funzione del punto 1.1.

 

 

...

12071998

14071998

11071998

12071998

...

Fig. 3: frammento di file costruito al punto 1.3 a partire dalla struttura illustrata in Fig. 2, per t=30.

 

 

 

Università di Roma "La Sapienza"

Facoltà di Ingegneria

Corso di Fondamenti di Informatica

Corso di Laurea: Ambiente e Territorio

Appello del 15-1-1999

 

Esercizio 2 (4 punti)

Si consideri il metodo di rappresentazione degli interi relativi "in complemento a due".

  1. Supponendo di lavorare con 8 bit, scrivere l’intervallo dei numeri rappresentabili in complemento a due.
  2. Sia G il giorno della data di nascita del candidato e si supponga di lavorare con 10 bit. Scrivere le rappresentazioni in complemento a due di G e di -G.
  3. Eseguire il calcolo dell’espressione (-G - 3).

 

Esercizio 3 (4 punti)

Con riferimento al seguente programma C, dire quale output fornisce quando riceve in ingresso, una alla volta, le ultime cinque cifre del vostro numero di matricola.

#include <stdio.h>

int a(int B[])

{

int A[5], i;

A[4]=2;

A[3]=1;

A[0]=A[4];

A[1]=A[3];

A[2]=A[1];

A[3]=A[4];

A[4]=A[1];

for(i=0; i<5; i=i+1)

B[i]=*(B+i)/A[i];

return -1;

}

int main()

{

int A[5], B[5], i;

for(i=0; i<5; i=i+1) {

scanf("%d",A+i);

B[i]=4-i;

}

a(&A[0]);

for(i=0; i<5; i=i+1)

printf("A[%d]=%d\n",B[i],A[B[i]]);

return 0;

}

 

Esercizio 4 (4 punti)

Si illustrino le modalità di rappresentazione delle immagini raster e vettoriali, spiegando, anche servendosi di esempi, in quali casi una modalità sia da preferirsi rispetto all’altra, e viceversa.