C.d.L. in SCIENZE AMBIENTALI
Teoria e Applicazioni delle Macchine Calcolatrici
Prova scritta del 25/7/2000

1)	 Sia S un array di n elementi (n ≤ 100) ciascuno costituito da tre campi, A, B e C, contenenti rispettivamente, un numero intero, un puntatore a carattere ed un numero reale. Scrivere una funzione C/Pascal di nome MAX_SEQUENZA che, presi come suoi parametri di ingresso l’array S e la sua dimensione n, restituisca come risultato l’indice dell’elemento di S il cui valore del campo A è il più alto tra tutti gli elementi di S  contenenti nel campo C un valore negativo.

2)	 Con riferimento all’esercizio 1, si supponga di realizzare la struttura dati S tramite una lista concatenata (invece che come array) in cui ciascun elemento contiene i campi informazione A, B e C oltre all’opportuno campo puntatore per la concatenazione degli elementi. Scrivere una funzione C/Pascal di nome MAX_LISTA che realizzi la stessa funzione della MAX_SEQUENZA dell’esercizio 1 ma relativamente alla nuova struttura dati S sopra definita, restituendo come risultato l'indirizzo dell'elemento individuato.

3)	Si considerino due numeri interi A e B rappresentati in complemento a 2 su k bit. (a) Si indichi un criterio generale che permetta di determinare se A è maggiore o uguale a B, senza ricorrere a conversioni di A e B. (b) Scrivere un programma C/Pascal che legge da standard input due sequenze di esattamente 16 cifre binarie che rappresentano i numeri binari A e B, le memorizza in due vettori di interi VA e VB e quindi determina se vale la relazione A ≥ B utilizzando il criterio sopra individuato e stampa un opportuno messaggio su standard output.
4)	Realizzare un programma C/Pascal che calcola e stampa su standard output il numero totale dei caratteri presenti in un file di testo di nome dati.txt.