Fondamenti di Informatica Programmazione in MATLAB Gestione File Grafici E s e rc i t a z i o n e 4 P r o f. R a f f a e l e P i z zo l a n t e A. A. 2 0 1 6 / 1 7
<<.txt>> carburante La matrice rappresenta il prospetto di un distributore di carburante, il quale ha diversi erogatori (nell esempio sono presenti 4 erogatori, rappresentati dalle righe). Ogni elemento di indica il numero di litri erogati per un certo carburante ( o ) in una specifica modalità ( o ) Esempio 1: (3, 2) ha valore 25 e indica che sono stati erogati 25 litri di carburante, in modalità Esempio 2: (1, 3) ha valore 36 e indica che sono stati erogati 36 litri di carburante, in modalità L array riga rappresenta l incasso per singolo litro di carburante erogato in modalità Esempio: I(1) ha valore 1.65 ed indica che l incasso per ogni litro di carburante è pari a 1.65 L array riga rappresenta la contrazione, in percentuale, dell incasso per singolo litro in modalità, rispetto all incasso che si otterrebbe inmodalità Esempio: (2) ha valore 7 e indica che l incasso per singolo litro di carburante (colonna 2) è interessato da una contrazione del 7%, rispetto all incasso che si otterrebbe dall erogazione di un litro di carburante in modalità Per cui, l incasso per ogni litro di carburante in modalità equivale quindi a 1.3950 1.3950 si ottiene nel modo seguente Erogatore 1 67 55 36 20 Erogatore 2 70 44 37 35 1.50 (incasso per litro, in modalità ) a cui si sottrae il 7% di 1.50 (il valore 7 è riportato in ) 1.50 0.1050 (0.105 è il 7% di 1.50) 1.3950 <<.txt>>
Esercizio 3 Esercizio 2 Esercizio 1 Erogatore 1 67 55 36 20 Erogatore 2 70 44 37 35 <<.txt>> <<.txt>> carburante Scrivere una funzione chiamata incasso_erogatore, che prenda come argomenti di input la matrice (distributore), l array riga, l array riga ed un valore intero indice_erogatore, e restituisca come argomento di output l incasso totale ottenuto dall erogatore specificato da indice_erogatore Esempio: incasso_erogatore(,,, 3) restituisce 381 Scrivere una funzione chiamata erogatore_massimo, che prenda come argomento di input la matrice (distributore), e restituisca due argomenti di output: l indice dell erogatore che ha erogato il numero massimo di litri in modalità e l indice dell erogatore che ha erogato il numero massimo di litri in modalità Esempio: [ind1_erogatore, ind2_erogatore] = erogatore_massimo() restituisce 4 e 3 Scrivere una funzione chiamata incasso_self, che prenda come argomento di input la matrice (distributore), l array riga, l array riga, e restituisca come argomento di output l incasso ottenuto, esclusivamente in modalità, da parte di tutti gli erogatori, per quanto riguarda entrambi i tipi di carburante ( e ) Esempio: incasso_self(,, ) restituisce 454.5675
Esercizio 4 [Parte 1] Scrivere un M-File Script chiamato distributore_script.m che effettui le seguenti operazioni 1. Importi la matrice dal file distributore.txt 2. Importi la matrice dal file.txt 3. Importi la matrice dal file.txt Erogatore 1 67 55 36 20 Erogatore 2 70 44 37 35 4. Invochi la funzione dell Esercizio 3 (chiamata incasso_self) con gli argomenti di input:, e e mostri a video l output prodotto dalla funzione stessa 5. Generi un grafico a barre con le seguenti caratteristiche 1. Asse X Rappresenta gli indici degli erogatori <<.txt>> carburante 2. Asse Y Ad ogni punto di Y, rappresenti il numero totale di litri erogati, in base all indice dell erogatore specificato sull asse X NOTA: I file distributore.txt,.txt e.txt (mostrati in seguito) contengono solo dati numerici. È utilizzato il separatore virgola (,) per separare le colonne. Si assuma che i file siano memorizzati all interno della Current irectory <<.txt>>
Esercizio 4 [Parte 2] Erogatore 1 67 55 36 20 Erogatore 2 70 44 37 35 Contenuto dei file <<.txt>> <<.txt>> carburante 1.65, 1.50 67, 55, 36, 20 70, 44, 37, 35 110, 25, 90, 15 98, 70, 38, 30 Contenuto del file distributore.txt Contenuto del file.txt 5, 7 Contenuto del file.txt
Esercizio 4 [Parte 3] Erogatore 1 67 55 36 20 Erogatore 2 70 44 37 35 Esempio Esercizio 4 <<.txt>> <<.txt>> carburante 250 200 150 100 50 0 1 2 3 4