C.d.L. in INFORMATICA
Fondamenti di Programmazione
C.d.L. in MATEMATICA
Programmazione 1
Prova scritta del 11/12/2002

1) (a) Si realizzi in C++ una funzione di nome ricerca che, presi come suoi parametri:
-	un array T di strutture, ciascuna costituita da un campo NOME di tipo stringa e un campo V di tipo intero, 
-	il numero n degli elementi presenti in T, e 
-	una stringa S, 
determina se T contiene o meno un elemento il cui campo NOME è uguale ad S. La funzione restituisce come suo risultato l'indice dell'elemento trovato o –1 in caso contrario. N.B. Si richiede di definire le stringhe come array di caratteri, utilizzando eventualmente le funzioni di libreria standard per la loro manipolazione.
(b)  Descrivere la funzione anche mediante un diagramma di flusso.

2)	Scrivere un programma in linguaggio C++ che legge da standard input una sequenza di stringhe, terminata dalla stringa "stop", e le memorizza in un array TAB i cui elementi (max. 100) hanno la struttura descritta al punto 1. Ciascuna stringa letta viene memorizzata nel campo NOME di un elemento di TAB soltanto se TAB non contiene già un elemento con lo stesso campo NOME (utilizzare obbligatoriamente la funzione RICERCA per effettuare il controllo). Inoltre, nel campo V di ciascun nuovo elemento di TAB viene inserita la lunghezza della stringa memorizzata nel corrispondente campo NOME. Il programma quindi determina l'elemento contenente la stringa più lunga nel campo NOME e la stampa su standard output. 
N.B. La stringa "stop" non va inserita in TAB. Le stringhe lette possono avere lunghezza massima di 31 caratteri e terminano non appena si incontra un carattere spazio o a capo. Eventuali spazi o a capo precedenti una stringa in input vanno ignorati.

3)	Scrivere una funzione C++ di nome CALCOLA che presi come suoi parametri un array di interi A (negativi e positivi), la sua dimensione n, ed un intero x calcola il quoziente intero q della divisione di x per la somma degli elementi di A

La funzione restituisce sia il quoziente q, sia un valore booleano che indica se la divisione è possibile oppure no (divisore uguale a 0). SUGG.: si definisca q come parametro per riferimento …). 
Realizzare anche un semplice programma principale che richiama la funzione CALCOLA in modo opportuno. N:B. Si richiede di non utilizzare variabili globali.