Ricerca di un valore nell array

Documenti analoghi
Ricerca di un valore nell array

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java

strutture e file di testo/binari Esercizio - lettura/filtro/scrittura PEOPLE.TXT PARTNERS.DAT Due persone sono compatibili

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Esercizio 1. Tavola ordinata in memoria centrale

Problema: ricerca di un elemento

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Array. Anno Accademico 2010/2011 Francesco Tortorella

Ω (grande omega) Esempio 10 COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Corso di Fondamenti di Informatica

ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori -

RICERCA IN UN VETTORE

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Esercitazioni di Elementi di Informatica

Ricerca binaria (o dicotomica) di un elemento in un vettore

COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI

Linguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Fondamenti di Informatica T-1. Classi & vettori

Linguaggio C. Aggregati di dati

Esercizi. Stringhe. Stringhe Ricerca binaria

A.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica

Fondamenti di Informatica

Gestione degli impegni Requisiti generali Si fissi come ipotesi che la sequenza di impegni sia ordinata rispetto al tempo,, e che ogni lavoratore abbi

Un vettore è una struttura dati che permette di memorizzare sequenze di dati omogeneii (sequenze di interi, di valori booleani,...

Array. Maurizio Palesi Salvatore Serrano. In C si possono definire tipi strutturati Vi sono due costruttori fondamentali

Programmazione I - Laboratorio

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Fondamenti di Informatica T-1 Modulo 2

Programmazione I - Laboratorio

Array ( vettore/matrice Un dato strutturato. indice Accesso diretto

Esercizi di Algoritmi e Strutture Dati

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA. INFORMATICA B Ingegneria Elettrica. La ricorsione

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Introduzione al C++ (continua)

CORSO DI LABORATORIO DI INFORMATICA

Prima&esercitazione&

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015

Fondamenti di Informatica T-1

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Algoritmi di ordinamento: Array e ricorsione

Algoritmi di ricerca. Per ricerca si intende qui il procedimento di localizzare una particolare informazione in un elenco di dati.

Complessità degli algoritmi. Obiettivi: Calcolare (valutare) la complessità di un algoritmo Confrontare algoritmi risolutivi del medesimo problema

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Calcolare x n = x x x (n volte)

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up

Tipi di dato strutturati: Array

Esercizi Svolti. Traccia completa svolta 1. Domanda 1:

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

LA COMPLESSITA DEGLI ALGORITMI

ESERCIZIO: Lettura/Scrittura Array

Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni. Lab 06 Array" Lab06 1

Esercitazione 7. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Esercizio 1: calcolo insieme intersezione

Corso di Fondamenti di Informatica Algoritmi su array / 2

Metodi statici. Dichiarazione e chiamata di metodi statici

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Programmazione I - corso B a.a prof. Viviana Bono

Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento

ESERCIZIO 1 (STRINGHE)

Algoritmi di ordinamento. Algoritmi. Selection sort semplificato - I. Selection sort semplificato - II

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Esercitazione 3. Heapsort

Introduzione al linguaggio C Puntatori

La ricerca dicotomica

Variabili strutturate

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Problema: calcolare il massimo tra K numeri

La programmazione nel linguaggio C

Iterazione. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E07. C. Limongelli Novembre 2007

Anche se due variabili vettore sono dello stesso tipo, NON è possibile l assegnamento diretto:

Esercizi d esame. Elena Tundo

Appunti di informatica. Lezione 10 anno accademico Mario Verdicchio

a.a Codice corso: 21012, 22010

Esercitazione di Calcolatori Elettronici Ing. Battista Biggio. Corso di Laurea in Ingegneria Elettronica. Capitolo 5 Linguaggio Assembly

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Modelli di recupero. Modello di recupero booleano

Esercizi C su array e matrici

Nell informatica esistono alcuni problemi particolarmente rilevanti, poiché essi:

Lezione 8 programmazione in Java. Anteprima. La ricorsione. Nicola Drago Dipartimento di Informatica Università di Verona

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Richiami: v[i] e &v[i] Organizzazione della memoria. Organizzazione della memoria. Esercitazione di Calcolatori Elettronici Ing. Gian Luca Marcialis

Sottoprogrammi: astrazione procedurale

% Dato un vettore in ingresso ed un numero a (entrambi float) % controllare quante occorrenze del numero sono presenti % nel vettore.

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Heap e code di priorità

Transcript:

Algoritmi su array Quando si usano gli array, si eseguono frequentemente alcune operazioni tipiche : inizializzazione lettura stampa ricerca del minimo e del massimo ricerca di un valore eliminazione di un valore inserimento di un valore ordinamento del vettore F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino Ricerca di un valore nell array Si voglia verificare se in un array è presente almeno un istanza di un certo valore. In caso positivo si fornisca l indice dell elemento. Quali costrutti usare? Come gestire l esito della ricerca? Soluzione 1 Soluzione 2 Soluzione 3 F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino 1

Conteggio numero di occorrenze di un valore nell array Si voglia verificare se in un array è presente almeno un occorrenza di un certo valore. In caso positivo si fornisca il numero delle istanze presenti. Soluzione F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino Ricerca posizioni delle occorrenze di un valore nell array Si voglia verificare se in un array è presente un certo valore. In caso positivo si forniscano le posizioni delle istanze presenti. Soluzione F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino 2

Ricerca posizioni delle occorrenze del minimo nell array Si voglia cercare il valore minimo in un array insieme con le posizioni delle varie occorrenze. Soluzione F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino Ricerca posizioni delle occorrenze di un valore nell array tramite sottoprogrammi Si voglia verificare se in un array è presente un certo valore. In caso positivo si forniscano le posizioni delle istanze presenti. Si strutturi il programma usando opportuni sottoprogrammi. Soluzione F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino 3

Ricerca posizioni delle occorrenze del minimo nell array tramite sottoprogrammi Si voglia cercare il valore minimo in un array insieme con le posizioni delle varie occorrenze. Si strutturi il programma usando opportuni sottoprogrammi. Soluzione Soluzione senza sottoprogrammi F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino Ricerca di un valore in un array ordinato Si voglia verificare se in un array ordinato è presente almeno un istanza di un certo valore. In caso positivo si fornisca l indice dell elemento. Quali costrutti usare? Come gestire l esito della ricerca? Come sfruttare l ordinamento dell array? Soluzione F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino 4

Ricerca di un valore in un array ordinato Quanti confronti si eseguono con l algoritmo appena visto? E possibile organizzare opportunamente la ricerca per ridurre i confronti? F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino Ricerca di un valore in un array ordinato Si supponga di dover cercare il valore 15 Si confronti inizialmente il valore con l elemento centrale Siccome 15>9 possiamo trascurare la prima metà dell array perché sicuramente non conterrà il valore cercato 1 2 3 4 5 6 7 8 9 1 3 4 6 9 10 13 14 18 F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino 5

Ricerca di un valore in un array ordinato Concentriamo l attenzione sulla parte inferiore e nuovamente confrontiamo 2 3 3 4 il valore con l elemento 4 6 centrale della parte superstite dell array 5 9 Siccome 15>13, possiamo 6 10 trascurare la metà 7 13 superiore della parte di 8 array che stiamo 14 considerando 9 18 1 1 F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino Ricerca di un valore in un array ordinato Anche questa volta l elemento centrale della parte di array in esame è minore di 15, per cui si considera la parte di array successiva all elemento centrale 1 2 3 4 5 6 7 8 9 1 3 4 6 9 10 13 14 18 F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino 6

Ricerca di un valore in un array ordinato Questa volta la parte di array è costituita da un solo elemento, diverso dal valore cercato. Non ci sono più altre parti di array da esplorare e quindi la ricerca è finita con esito negativo. Quanti confronti abbiamo fatto in tutto? 1 2 3 4 5 6 7 8 9 1 3 4 6 9 10 13 14 18 F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino Ricerca binaria L algoritmo descritto si definisce di ricerca binaria o dicotomica. Come implementarlo? Quali costrutti utilizzare? Soluzione F. Tortorella Corso di Elementi di Informatica 2006/2007 Università degli Studi di Cassino 7

function main % lettura di un array e ricerca dell'occorrenza di un elemento % in un array % Soluzione 1 % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % pos: variabile contenente la posizione del valore nell'array % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input(''); % input valore da cercare val=input('\nvalore da cercare: '); % ricerca dell'occorrenza pos=0; if(v(i)==val) pos=i;

% stampa dei risultati fprintf('\narray letto:\n'); fprintf('v(%d): %g\n',i,v(i)); % si verifica se è stata effettivamente trovata un'occorrenza if(pos==0) fprintf('\nnell''array non esistono occorrenze del valore %g\n',val); else fprintf('\nil valore %g si trova in posizione %d\n',val,pos);

function main % lettura di un array e ricerca dell'occorrenza di un elemento % in un array % Soluzione 2 % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % pos: variabile contenente la posizione del valore nell'array % trovato: flag booleano che riporta l'esito della ricerca % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input(''); % input valore da cercare val=input('\nvalore da cercare: '); % ricerca dell'occorrenza pos=0; trovato=0; i=1; while(i<=n & ~trovato) if(v(i)==val) pos=i; trovato=1; i=i+1;

% stampa dei risultati fprintf('\narray letto:\n'); fprintf('v(%d): %g\n',i,v(i)); % si verifica se è stata effettivamente trovata un'occorrenza if(~trovato) fprintf('\nnell''array non esistono occorrenze del valore %g\n',val); else fprintf('\nil valore %g si trova in posizione %d\n',val,pos);

function main % lettura di un array e ricerca dell'occorrenza di un elemento % in un array % Soluzione 3 % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % pos: variabile contenente la posizione del valore nell'array % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input(''); % input valore da cercare val=input('\nvalore da cercare: '); % ricerca dell'occorrenza pos=0; i=1; while(i<=n & pos==0) if(v(i)==val) pos=i; i=i+1;

% stampa dei risultati fprintf('\narray letto:\n'); fprintf('v(%d): %g\n',i,v(i)); % si verifica se è stata effettivamente trovata un'occorrenza if(pos==0) fprintf('\nnell''array non esistono occorrenze del valore %g\n',val); else fprintf('\nil valore %g si trova in posizione %d\n',val,pos);

function main % lettura di un array e conteggio del numero di occorrenze % di un elemento in un array % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % cont: variabile contenente il numero di occorrenze trovate % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input(''); % input valore da cercare val=input('\nvalore da cercare: '); % ricerca dell'occorrenza cont=0; if(v(i)==val) cont=cont+1; % stampa dei risultati fprintf('\narray letto:\n'); fprintf('v(%d): %g\n',i,v(i)); % si verifica se è stata effettivamente trovata un'occorrenza if(cont==0) fprintf('\nnell''array non esistono occorrenze del valore %g\n',val); else fprintf('\nil valore %g è presente %d volte nell''array\n',val,cont);

function main % lettura di un array e ricerca delle posizioni delle occorrenze % di un elemento in un array % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % pos: array contenente gli indici delle occorrenze % cont: variabile contenente il numero di occorrenze trovate % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); pos=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input(''); % input valore da cercare val=input('\nvalore da cercare: '); % ricerca dell'occorrenza cont=0; if(v(i)==val) cont=cont+1; pos(cont)=i;

% stampa dei risultati fprintf('\narray letto:\n'); fprintf('v(%d): %g\n',i,v(i)); % si verifica se è stata effettivamente trovata un'occorrenza if(cont==0) fprintf('\nnell''array non esistono occorrenze del valore %g\n',val); else fprintf('\nil valore %g è presente %d volte nell''array\n',val,cont); fprintf('in queste posizioni: '); for i=1:cont fprintf('%d ',pos(i)); fprintf('\n');

function main % lettura di un array, ricerca del minimo e ricerca % delle posizioni delle occorrenze del minimo % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % min: variabile contenente il valore da cercare % pos: array contenente gli indici delle occorrenze % cont: variabile contenente il numero di occorrenze trovate % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); pos=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input('');

% ricerca del minimo cont=1; pos(1)=1; min=v(1); for i=2:n if(v(i)<min) % trovato nuovo minimo % si reinizializza il minimo corrente % ed il vettore delle occorrenze cont=1; pos(1)=i; min=v(i); elseif(v(i)==min) % trovata nuova occorrenza del minimo corrente % si aggiorna il vettore delle occorrenze cont=cont+1; pos(cont)=i; % stampa dei risultati fprintf('\narray letto:\n'); fprintf('v(%d): %g\n',i,v(i)); % stampa del minimo e delle occorrenze fprintf('\nil valore minimo nell''array è %g.\n',min); fprintf('e'' presente %d volte nelle seguenti posizioni: ',cont); for i=1:cont fprintf('%d ',pos(i)); fprintf('\n');

function main % lettura di un array, ricerca delle posizioni % delle occorrenze di un valore % variabili utilizzate % v: array in input % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % pos: array contenente gli indici delle occorrenze % cont: variabile contenente il numero di occorrenze trovate % input dimensione n=input('numero elementi: '); % input array v = leggiarray(n); % ricerca del minimo val = input('valore: '); % ricerca delle occorrenze [pos,cont] = cercaocc(v,n,val); % stampa dei risultati fprintf('\narray letto:\n'); stampaarray(v,n); if(cont==0) fprintf('\nil valore %g non è presente nell''array.\n',val); else fprintf('\nil valore %g è presente %d volte nelle seguenti posizioni:\n',val,cont); stampaarray(pos,cont); fprintf('\n'); %%%%%% fine main %%%%%%%%%%%%%%%

function vet=leggiarray(num) % legge un array di num elementi % parametri di ingresso % num: numero di elementi da leggere % parametri di uscita % vet: array letto % dimensionamento array vet=zeros(num,1); % ciclo di lettura um fprintf('valore %d: ',i); vet(i)=input(''); % fine funzione leggiarray function stampaarray(vet,num) % Stampa gli elementi dell'array vet % parametri di ingresso % vet: array da stampare % num: numero degli elementi dell'array % parametri di uscita % nessuno % variabili usate % i: indice per scorrere l'array um fprintf('%g\n',vet(i)); % fine funzione stampaarray

function [p,c]=cercaocc(vet,num,val) % restituisce il numero e gli indici delle occorrenze % del valore val nel vettore vet % parametri di ingresso % vet: array su cui effettuare la ricerca % num: numero degli elementi dell'array % val: valore di cui cercare le occorrenze % parametri di uscita % p: array contenente gli indici delle occorrenze di val % c: numero di occorrenze trovate % variabili locali % i: indice per scorrere l'array % dimensionamento dell'array p p=zeros(num,1); c=0; um if(vet(i)==val) c=c+1; p(c)=i; % fine funzione cercaocc

function main % lettura di un array, ricerca del minimo e ricerca % delle posizioni delle occorrenze del minimo % variabili utilizzate % v: array in input % n: dimensione dell'array fornito in input % min: variabile contenente il minimo % pos: array contenente gli indici delle occorrenze % cont: variabile contenente il numero di occorrenze trovate % input dimensione n=input('numero elementi: '); % input array v = leggiarray(n); % ricerca del minimo min = cercamin(v,n); % ricerca delle occorrenze [pos,cont] = cercaocc(v,n,min); % stampa dei risultati fprintf('\narray letto:\n'); stampaarray(v,n); % stampa del minimo e delle occorrenze fprintf('\nil valore minimo nell''array è %g.\n',min); fprintf('e'' presente %d volte nelle seguenti posizioni:\n',cont); stampaarray(pos,cont); fprintf('\n'); %%%%%% fine main %%%%%%%%%%%%%%%

function vet=leggiarray(num) % legge un array di num elementi % parametri di ingresso % num: numero di elementi da leggere % parametri di uscita % vet: array letto % dimensionamento array vet=zeros(num,1); % ciclo di lettura um fprintf('valore %d: ',i); vet(i)=input(''); % fine funzione leggiarray function m=cercamin(vet,num) % restituisce il minimo del vettore vet % parametri di ingresso % vet: array su cui cercare il minimo % num: numero di elementi nell'array % parametri di uscita % m: minimo trovato % variabili locali % i: indice per scorrere l'array m=vet(1); for i=2:num if(vet(i)<m) % trovato nuovo minimo m=vet(i); % fine funzione cercamin

function [p,c]=cercaocc(vet,num,val) % restituisce il numero e gli indici delle occorrenze % del valore val nel vettore vet % parametri di ingresso % vet: array su cui effettuare la ricerca % num: numero degli elementi dell'array % val: valore di cui cercare le occorrenze % parametri di uscita % p: array contenente gli indici delle occorrenze di val % c: numero di occorrenze trovate % variabili locali % i: indice per scorrere l'array % dimensionamento dell'array p p=zeros(num,1); c=0; um if(vet(i)==val) c=c+1; p(c)=i; % fine funzione cercaocc

function stampaarray(vet,num) % Stampa gli elementi dell'array vet % parametri di ingresso % vet: array da stampare % num: numero degli elementi dell'array % parametri di uscita % nessuno % variabili usate % i: indice per scorrere l'array um fprintf('%g\n',vet(i)); % fine funzione stampaarray

function main % lettura di un array, ricerca del minimo e ricerca % delle posizioni delle occorrenze del minimo % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % min: variabile contenente il valore da cercare % pos: array contenente gli indici delle occorrenze % cont: variabile contenente il numero di occorrenze trovate % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); pos=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input('');

% ricerca del minimo cont=1; pos(1)=1; min=v(1); for i=2:n if(v(i)<min) % trovato nuovo minimo % si reinizializza il minimo corrente % ed il vettore delle occorrenze cont=1; pos(1)=i; min=v(i); elseif(v(i)==min) % trovata nuova occorrenza del minimo corrente % si aggiorna il vettore delle occorrenze cont=cont+1; pos(cont)=i; % stampa dei risultati fprintf('\narray letto:\n'); fprintf('v(%d): %g\n',i,v(i)); % stampa del minimo e delle occorrenze fprintf('\nil valore minimo nell''array è %g.\n',min); fprintf('e'' presente %d volte nelle seguenti posizioni: ',cont); for i=1:cont fprintf('%d ',pos(i)); fprintf('\n');

function main % lettura di un array ordinato e ricerca dell'occorrenza % di un elemento % variabili utilizzate % v: array in input % i: indice per scorrere gli elementi dell'array % j: indice per scorrere gli elementi dell'array % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % pos: variabile contenente la posizione del valore nell'array % trovato: flag booleano che riporta l'esito della ricerca % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input(''); % input valore da cercare val=input('\nvalore da cercare: ');

% ricerca dell'occorrenza pos=0; trovato=0; i=1; while(i<=n & v(i)<=val & ~trovato) if(v(i)==val) pos=i; trovato=1; i=i+1; % stampa dei risultati fprintf('\narray letto:\n'); for j=1:n fprintf('v(%d): %g\n',i,v(j)); % si verifica se è stata effettivamente trovata un'occorrenza if(~trovato) fprintf('\nnell''array non esistono occorrenze del valore %g\n',val); fprintf('ultimo indice considerato: %d\n',i); else fprintf('\nil valore %g si trova in posizione %d\n',val,pos);

function main % lettura di un array ordinato e ricerca dell'occorrenza % di un elemento % variabili utilizzate % v: array in input % n: dimensione dell'array fornito in input % val: variabile contenente il valore da cercare % posin: variabile contenente la posizione dell'estremo inferiore della % parte di array in esame % posfin: variabile contenente la posizione dell'estremo inferiore della % parte di array in esame % posmed: variabile contenente la posizione dell'elemento centrale nella % parte di array in esame % trovato: flag booleano che riporta l'esito della ricerca % input dimensione n=input('numero elementi: '); % dimensionamento array v=zeros(n,1); % ciclo di lettura fprintf('valore %d: ',i); v(i)=input(''); % input valore da cercare val=input('\nvalore da cercare: ');

% ricerca dell'occorrenza posin=1; posfin=n; trovato=0; while(~trovato & posin<=posfin) % si determina l'elemento centrale posmed=floor((posin+posfin)/2); % si confronta con il valore da cercare if(v(posmed)>val) % si considera la metà inferiore posfin=posmed-1; elseif(v(posmed)<val) % si considera la metà superiore posin=posmed+1; else % trovato il valore trovato=1; pos=posmed; % stampa dei risultati fprintf('\narray letto:\n'); for j=1:n fprintf('v(%d): %g\n',i,v(j)); % si verifica se è stata effettivamente trovata un'occorrenza if(~trovato) fprintf('\nnell''array non esistono occorrenze del valore %g\n',val); else fprintf('\nil valore %g si trova in posizione %d\n',val,pos);