DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA Lab 3: 27 Aprile 2015 Marco D. Santambrogio – [email protected] Gianluca Durelli – [email protected] Ver. aggiornata al 26 Aprile 2015 Obiettivi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Esercitarsi sui costrutti visti a lezione Tutto il C visto fino a qui In particolare: Funzioni, Array, Matrici, Ricorsione 2 Esercizi DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • • • • • • • Es0: Prodotto Matrici Es1: Shift Array Es2: Apertura Negozio Es3: Media, Varianza array Es4: Media, Varianza per Riga Es5: Minimo, Massimo array Es6: Numero di Eulero 3 Exe 0: Prodotto Matrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Scrivere un programma che ricevute in ingesso due matrici ne calcoli il loro prodotto, se possibile. 4 Exe 0: Prodotto Matrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 5 Exe 0: Prodotto Matrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 6 Exe 0: Prodotto Matrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 7 Exe 0: Prodotto Matrici DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE 8 Exe 1: Shift Array DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Scrivere una funzione che preso in ingresso un array ed un numero intero N lo "shifti" in avanti di N posizioni. • L'operatore "shift”: • Dato • • • prende l'elemento in posizione i lo mette al posto dell'elemento in posizione i+N. Se i+N e' maggiore della lunghezza dell'array si ricomincia a contare dall'inizio. N=4 Array = 123456 Soluzione = 345612 La funzione DEVE deve prendere come parametri solo un array ed il numero. L'utente deve poter scegliere il numero degli elementi nell'array. Il riempimento dell'array (scanf) non puo' essere fatto nella funzione che fa lo shift. 9 Exe 2: Apertura Negozio DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • • • Scrivere un programma per la gestione degli orari di apertura di un negozio. Il programma deve poter permettere di inserire l'elenco degli orari in cui il negozio e' aperto. L'orario di apertura e' definito da: Giorno Ora apertura (ore, minuti) Ora chiusura (ore, minuti) • Il programma permette inoltre la stampa dell'elenco degli orari inseriti. • Esistera' quindi una funzione che una volta invocata procedera' alla stampa a v ideo di questi dati. • • Infine il programma deve prevedere una funzione che presi in ingresso un giorno ed un'ora comunichi al chiamante se il negozio e' aperto in quell'ora o meno. 10 Exe 3: Media, Varianza Array DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Scrivere un programma che: •riceva in ingresso un array •ne calcoli la media •e la deviazione standard 1 N V = åVi N i=1 1 N 2 s= (V -V ) å i N -1 i=1 Suggerimento: usare due funzioni, una per il calcolo della media ed una per il calcolo della deviazione standard. Per il calcolo della radice quadrata usare la funzione float sqrt(float) Per usarla includere la libreria math.h e compilare nel seguente modo: gcc file.c –o exe -lm 11 Exe 4: Media, Varianza per Riga DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Scrivere un programma che: Presa in ingresso una matrice calcoli due vettori contenenti • le medie per ogni riga della matrice • e le deviazioni standard per ogni riga della matrice. • In altre parole il programma calcolera' il valore di due vettori mean ed std in cui: l'elemento in posizione i di mean conterra' la media della riga i della matrice l'elemento in posizione i di std conterra' la deviazione standard della riga i della matrice 12 Exe 5: Massimo, Minimo Array DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che: Ricevuto in ingresso un array trovi il massimo ed il minimo dell'array. • Scrivere una funzione per il calcolo del massimo ed una per il calcolo del minimo. • Entrambe le funzioni DEVONO essere implementate usando la RICORSIONE. 13 Exe 6: Numero di Eulero DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • Si scriva un programma che approssimi il numero di Eulero (e) in maniera ricorsiva. P 1 e=å N =0 N! • Si calcoli l'approssimazione di e: • Si lasci possibilita' all'utente di specificare il numero di passi P della serie. • Esempio: • P = 0 : e = 1/0! P = 1 : e = 1/0! + 1/1! P = 2 : e = 1/0! + 1/1! + 1/2! ... P = N : e = 1/0! + 1/1! + ... + 1/(N-1)! + 1/N! Si noti che indicato con e_N l'approssimazione del numero di eulero ad N passi questa e' ottenuta come 1/N! + e_(N-1) 14 DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE • BUON LAVORO! 15