Università di Roma "La Sapienza"

Facoltà di Ingegneria

Corso di Fondamenti di Informatica

Corso di Laurea: Ambiente e Territorio

Appello del 7-6-1999. Prima prova (tempo: due ore).

 

Esercizio 1 (18 punti)

Gli organizzatori di una manifestazione enologica hanno memorizzato in un file di strutture le seguenti informazioni riguardanti le aziende che intendono partecipare alla manifestazione ed i prodotti che saranno messi in mostra:

  1. Scrivere un insieme di dichiarazioni globali in C 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, ricevuto come parametro il nome del file di strutture di cui sopra, costruisca, restituendola, una lista (rappresentata mediante strutture e puntatori) in cui sono memorizzati i codici di tutte le aziende per le quali il rapporto tra quantità di bottiglie prodotte ed estensione dei vigneti risulti inferiore a 1000.
  3. Scrivere una funzione C che, ricevuti come parametri il nome del file di strutture di cui sopra, la denominazione di un vino e il nome di un file da creare, costruisca tale file inserendovi, per ogni azienda produttrice di quel vino, il codice dell'azienda e la quantità di bottiglie prodotte.

 

 

Università di Roma "La Sapienza"

Facoltà di Ingegneria

Corso di Fondamenti di Informatica

Corso di Laurea: Ambiente e Territorio

Appello del 7-6-1999. Seconda prova (tempo: un'ora).

Esercizio 2 (4 punti)

Illustrare le caratteristiche dei tipi di dato pila e coda.

Esercizio 3 (4 punti)

Si consideri il seguente frammento C.

struct elem {

int info;

struct elem *next;

};

void InCoda(struct elem **pptesta, struct elem *pnuovo, struct elem **ppcoda)

{

if(*pptesta==NULL)

*pptesta=pnuovo;

else

(*ppcoda)->next=pnuovo;

pnuovo->next=*pptesta;

*ppcoda=pnuovo;

return;

}

Discutere il comportamento della funzione InCoda e la sua possibile utilità.

Esercizio 4 (4 punti)

Data la relazione

EDIFICIO(NumeroPiani, NumeroAppartamenti, NumeroAbitanti),

scrivere una interrogazione SQL per ottenere l'altezza (numero di piani) degli edifici più popolati.

Esempio: se un'istanza della relazione è:

NumeroPiani

NumeroAppartamenti

NumeroAbitanti

6

24

98

5

20

96

8

16

61

4

22

98

l'interrogazione deve restituire:

NumeroPiani

6

4