C.d.L. in SCIENZE AMBIENTALI
Teoria e Applicazioni delle Macchine Calcolatrici
Prova scritta del 17/9/2002

1) 	Sia T una struttura dati costituita da un array di coppie <A,B>, con A e B entrambi di tipo intero. Scrivere in linguaggio C/C++ una funzione di nome RICERCA che, presi come suoi parametri l’array T, la sua dimensione n, ed un numero intero x, determina se l'array T contiene almeno un elemento il cui campo A ha valore uguale ad x. La funzione termina restituendo l'indice dell'elemento di A trovato o -1 in caso contrario.
Descrivere la funzione anche mediante diagramma di flusso.

2)	Scrivere un programma in linguaggio C/C++ che legge da un file di nome "dati.txt" una sequenza di numeri interi e costruisce un array FREQ di coppie di interi come quello descritto al punto 1 (di dimensione max. 1000), nel modo seguente: per ciascun numero n letto dal file dati.txt, se n è già contenuto nel campo A di un elemento di FREQ, incrementa di 1 il valore del campo B dello stesso elemento; se il numero n non è contenuto in FREQ, aggiungi a FREQ, in ultima posizione, la coppia avente n come valore del campo A e 1 come valore del campo B (in altri termini, FREQ permette di associare ad ogni diverso numero n presente in dati.txt il numero di volte che n stesso compare nel file). Il programma quindi provvede a stampare su standard output l’elenco di tutte le coppie contenute in FREQ, una per ogni riga di stampa. Ad esempio, se dati.txt contiene la sequenza di numeri (12,5,4,5,12,5), l’output ottenuto sarà  
12	2 
5 		3
4 		1
Si richiede di utilizzare (obbligatoriamente) la funzione RICERCA realizzata al punto 1 per effettuare il controllo della presenza o meno del numero n in FREQ.