C.d.L. in INFORMATICA
Fondamenti di Programmazione
C.d.L. in MATEMATICA
Programmazione 1
Prova scritta del 19/2/2003

1) (a) Realizzare una funzione di nome SPOSTA che, presi come suoi parametri un array V di numeri reali, la sua dimensione n ed un intero i, sposta tutti gli elementi di V di una posizione verso destra a partire dalla posizione di indice i. La funzione provvede anche a modificare opportunamente la dimensione di V. 
(b) Realizzare una funzione di nome INSERISCI_ORD che, presi come suoi parametri un array A di numeri reali ordinato in senso crescente, la sua dimensione n, ed un numero reale X, inserisce X in A (mantenendo l’ordinamento) se X non è presente, oppure termina lasciando A invariato se X è già presente. Nel caso in cui sia stato effettuato l’inserimento la funzione restituisce l’indice dell’elemento inserito e modifica n; altrimenti la funzione restituisce -1. Si richiede di utilizzare obbligatoriamente la funzione SPOSTA per rendere disponibile l’elemento di A in cui inserire X. N.B. Si assuma per semplicità che entrambe le funzioni non effettuino alcun controllo sulla capacità massima di V: eventuali controlli saranno svolti dal programma chiamante.

2)	Scrivere un programma che legge da standard input una sequenza di numeri reali e li inserisce, uno alla volta, in un array DATI tramite la funzione INSERISCI_ORD. Dopo ogni inserimento, il programma chiede all’utente se vuol inserire un altro numero oppure smettere. Nel caso in cui lo spazio in DATI sia esaurito, l’inserimento termina forzatamente (con opportuno messaggio all’utente). Al termine delle operazioni di inserimento il programma provvede comunque a stampare su standard output l’array DATI. Si supponga che DATI sia inizialmente "vuoto" e che la sua capacità massima sia di 100 elementi.

3)	Scrivere un programma che legge da standard input una sequenza di 16 numeri interi e li memorizza uno alla volta in una matrice M di 4x4 interi. Il programma quindi calcola la somma di tutti i numeri presenti sulla diagonale principale di M e la stampa sullo standard output.