• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
10
0
0

Testo completo

(1)

Fondamenti di Informatica

Approfondimento Funzioni find, max e min

Prof. Arcangelo Castiglione

A.A. 2016/17

(2)

Approfondimento Funzioni min e max – 1/2

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

Approfondimento Funzioni min e max

(3)

Approfondimento Funzioni min e max – 1/2

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

Approfondimento Funzioni min e max

>> A = [ 1 2 3 4 5 ];

>> indice_massimo(A) ans =

1

Possibile Soluzione (NON CORRETTA)

Esempio d’uso

function [ indice ] = indice_massimo(A) indice = find(max(A));

end

(4)

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

function [ indice ] = indice_massimo(A) indice = find(max(A));

end

>> A = [ 1 2 3 4 5 ];

>> indice_massimo(A) ans =

1

Possibile Soluzione (NON CORRETTA)

Esempio d’uso Restituisce il valore 1, che è errato

Infatti, l’indice corretto del valore massimo è 5

Approfondimento Funzioni min e max – 1/2

Approfondimento Funzioni min e max

(5)

•Perché questa soluzione non è corretta?

• max(A) à restituisce il valore massimo dell’array A, nell’esempio, restituisce 5

• find(max(A)) à nell’esempio equivale ad invocare find(5) à restituisce 1

• find restituisce l’indice degli elementi non nulli (diversi da 0) dell’array (o matrice) preso di input

Nell’esempio, max(A) restituisce un unico elemento (l’elemento 5), che è non nullo

Quindi, find(max(A)) restituisce 1, ovvero l’indice dell’unico elemento preso in input

function [ indice ] = indice_massimo(A) indice = find(max(A));

end

Possibile Soluzione (NON CORRETTA)

>> A = [ 1 2 3 4 5 ];

>> indice_massimo(A) ans =

1

Esempio d’uso

Approfondimento Funzioni min e max – 1/2

Approfondimento Funzioni min e max

(6)

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

function [ indice ] = indice_massimo(A) [ valore, indice ] = max(A);

end

Possibile Soluzione 1 (CORRETTA)

Possibile Soluzione 2 (CORRETTA)

function [ indice ] = indice_massimo(A) indice = find(A == max(A));

end

Approfondimento Funzioni min e max – 2/2

Approfondimento Funzioni min e max

(7)

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

function [ indice ] = indice_massimo(A) [ valore, indice ] = max(A);

end

Possibile Soluzione 1 (CORRETTA)

Possibile Soluzione 2 (CORRETTA)

function [ indice ] = indice_massimo(A) indice = find(A == max(A));

end

Approfondimento Funzioni min e max – 2/2

Approfondimento Funzioni min e max

…potrebbe restituire anche più di un indice Esempio:

A = [ 4 5 6 7 7 ];

indice_massimo(A) ans =

4 5

(8)

Approfondimento Funzioni min e max – 2/2

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

function [ indice ] = indice_massimo(A) [ valore, indice ] = max(A);

end

Possibile Soluzione 1 (CORRETTA)

Possibile Soluzione 2 (CORRETTA)

function [ indice ] = indice_massimo(A) indice = find(A == max(A));

end

Elemento di valore massimo

Indice corrispondente

all’elemento di valore massimo

Approfondimento Funzioni min e max

(9)

Approfondimento Funzioni min e max – 2/2

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

function [ indice ] = indice_massimo(A) [ valore, indice ] = max(A);

end

Possibile Soluzione 1 (CORRETTA)

Possibile Soluzione 2 (CORRETTA)

function [ indice ] = indice_massimo(A) indice = find(A == max(A));

end

Elemento di valore massimo

Indice corrispondente all’elemento di valore massimo

Ulteriore Esempio

Lezione 15: Array e Matrici in MATLAB - Esercitazione 2 (slide pp. 12-15)

Approfondimento Funzioni min e max

(10)

Approfondimento Funzioni min e max – 2/2

• Scrivere una funzione che prenda come argomento di input un array A e restituisca in output l’indice del valore massimo di A

function [ indice ] = indice_massimo(A) [ valore, indice ] = max(A);

end

Possibile Soluzione 1 (CORRETTA)

Possibile Soluzione 2 (CORRETTA)

function [ indice ] = indice_massimo(A) indice = find(A == max(A));

end

Elemento di valore massimo

Indice corrispondente all’elemento di valore massimo

Ulteriore Esempio

Lezione 15: Array e Matrici in MATLAB - Esercitazione 2 (slide pp. 12-15)

N.B. Il comportamento della funzione min è analogo a quello della funzione max

Approfondimento Funzioni min e max

Riferimenti

Documenti correlati

¨  Se la stringa di formato contiene un white space, la scanf legge zero o più white space, che verranno scartati, fino al primo carattere non white space.

Scrivere il codice della classe Esame, e scrivere inoltre il codice di una classe ProvaEsame che consente, attraverso il suo metodo main, di inserire un appello di esame e tutti

• Un costruttore che consente di definire una nuova TabellaVoti; il costruttore deve prendere in ingresso un array di stringhe che definisce la sequenza dei nomi degli studenti,

 An efficient means of transferring data directly between I/O and memory for large data transfers since programmed I/O is suitable only for slow devices and individual

Scrivere la funzione Matlab find_val che riceva in input un vettore v e una variabile stringa tipo che puo' assumere solo i valori 'min' e 'max' e restituisca in output il

• Scrivere una funzione chiamata totale_camicie, che prenda in input la matrice M (magazzini) e restituisca in output il numero totale di camicie (in tutti i magazzini).

Scrivere una funzione libri_venduti, che prenda come argomento di input la matrice L (libreria) ed un intero indice_target, e restituisca come argomento di output il numero totale

• Regola 3: Anche se le stringhe di formato della scanf() assomigliano molto a quelle della printf(), hanno una semantica leggermente differente (leggete il manuale!). • Regola