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
5
4
2
3
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.