====== Esercitazione 6 ====== Nei seguenti esercizi sperimentare la compilazione separata scrivendo i prototipi delle funzioni in un file .h, la definizione della funzione in un file .c, e il main in un file .c separato. Seguire le istruzioni in {{:fisica:informatica:201516:secondoanno:lez013-compilazioneseparata.pdf|}} (caso 2 e/o 3). Nel seguito, quando si dice "riceve un array" o qualcosa di equivalente, si intende *SEMPRE* che venga passata anche la lunghezza dell'array come parametro, anche se non viene esplicitamente detto. Inoltre si richiede che, oltre alla funzione o procedura che e' stata richiesta, scriviate anche un main che usi tale funzione e ne dimostri *ogni* funzionalita'. Per ultimo, se con l'esercizio viene fornita la firma(o prototipo) della funzione/procedura da scrivere, si richiede che la soluzione rispetti questa firma in ogni dettaglio (nome funzione, tipo di ritorno, lista di argomenti). Ricordate che una procedura e' una funzione con tipo di ritorno void. Infine in tutti gli esercizi che seguono siete invitati, quando e' opportuno, ad applicare gli schemi di ricerca certa, incerta e verifica di una proprieta' visti a lezione. Per quanto riguarda l'uso dei booleani utilizzare #DEFINE FALSE 0 #DEFINE TRUE 1 come visto a lezione. === Esercizio 1 === Scrivere una funzione massimo comun divisore che realizza la funzione del massimo comun divisore con uno degli algoritmi visti a lezione. Scrivere quindi una funzione main() per collaudare la funzione implementata. === Esercizio 2 === Scrivere una procedura per stampare il bordo di un rettangolo di dimensioni chieste all'utente che puo' anche scegliere il carattere di riempimento.. Esempio di rettangolo 7x3 con carattere di riempimento *: ******* * * ******* Scrivere quindi una funzione main() per collaudare la procedura implementata. === Esercizio 3 === Scrivere una procedura che presi tre interi primo, secondo e terzo li scambi in modo che alla fine risultino in ordine crescente. === Esercizio 4 === Dato un array di caratteri, scrivere una funzione che controlli che l'array contenga solo caratteri alfabetici (maiuscoli o minuscoli). === Esercizio 5 === Scrivere una funzione che, ricevuto un array di interi, ritorni la somma di tutti gli elementi e azzeri tutti gli elementi in posizione dispari. Fare attenzione all'ordine in cui eseguire le operazioni. === Esercizio 6 === Scrivere una funzione che ricevuto un array di interi, restituisca la posizione della prima occorrenza di un elemento pari nell'array. Fermare la ricerca appena si e' trovata l'occorrenza. === Esercizio 7 === Scrivere una procedura che ricevuto un array di interi, restituisca la posizione della prima e dell' ultima occorrenza di un elemento pari nell'array. void primoultimo_pari(int arr[], int dim, int* primaocc,int* ultimaocc); === Esercizio 8 === Scrivere una funzioni che ricevuto un array di numeri reali, controlli che sia ordinato in maniera crescente. === Esercizio 9 === Scrivere una procedura che ricevuto un array di caratteri modifichi il vettore in modo che ogni vocale venga sostituita dal simbolo '$'. void dollarize(char arr[], int dim); === Esercizio 10 === Scrivere una procedura che, ricevuto un array di interi, ordini l'array. Non ci sono restrizioni di efficienza, potete usare un qualsiasi algoritmo di ordinamento.