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

1)	Si consideri una lista concatenata i cui elementi siano costituiti da un campo informazione INFO di tipo carattere e da due campi PUNT1 e PUNT2, entrambi di tipo puntatore ad un elemento della lista stessa, e si assuma che gli elementi della lista siano concatenati tramite il puntatore PUNT2. Scrivere una funzione C di nome MODIFICA_DATI che, preso come suo parametro di ingresso una lista L del tipo descritto, modifichi tutti gli elementi di L il cui campo PUNT1 e’ NULL assegnando ad essi l’indirizzo di inizio della lista L stessa. 

2)	(a) Scrivere una funzione C di nome SUFFISSO che, presi come suoi parametri di ingresso un vettore di caratteri A, la sua dimensione n, e due caratteri c1 e c2, determina se gli ultimi due caratteri di A (e cioè quelli di indice n-1 e quello precedente) coincidono o meno con la sequenza  c1 c2 (N.B. trattare anche il caso in cui n sia < 2).
	(b) Si consideri un file di testo di nome dati.txt contenente sequenze di caratteri (stringhe) separate tra loro da esattamente un carattere ‘*’. Scrivere un programma C che legge dal file dati.txt una alla volta le stringhe in esso contenute, memorizza ciascuna stringa letta in un vettore S, e controlla per ciascuna di esse, tramite la funzione SUFFISSO, se la stringa termina o meno con la sequenza di caratteri ‘i’ ‘t’ e, in caso affermativo, stampa su standard output l’intera stringa (altrimenti non stampa niente e passa subito alla stringa successiva).
N.B. Si richiede di non utilizzare le possibilità di lettura e manipolazione di stringhe offerte dal C.
N.B. Il carattere delimitatore ‘*’ non fa parte della stringa.
N.B. La lunghezza massima della stringa è 32: nel caso in cui durante la lettura da file si trovi una stringa che  eccede questa lunghezza il programma termina segnalando un errore. 
 	(c) Dire qual è la complessità computazionale dell’algoritmo realizzato dalla funzione SUFFISSO.

3)	Dare la rappresentazione in complemento a 2 su 8 bit dei seguenti numeri (in rappresentazione decimale): -112, +113. Quindi, utilizzando le rappresentazioni in complemento a 2, calcolarne la somma in colonna mostrando gli eventuali riporti.  N.B. Anche il risultato deve essere rappresentato in complemento a 2 su 8 bit.