libri-javascript-python

Realizziamo in questo semplice tutorial alcuni esempi che riguardano la ricerca sequenziale in C++, detta anche ricerca lineare. Vedremo in seguito invece la ricerca binaria in un array.

In una ricerca di tipo sequenziale gli elementi vengono confrontati appunto in sequenza e quando si trova il valore si termina la ricerca. Quindi tutti gli elementi al più vengono confrontati tutti con la chiave. Se l’elemento viene trovato non è necessario proseguire la ricerca.

Ricerca sequenziale di un elemento in un array in C++

Il primo degli esempi che voglio proporvi è la ricerca sequenziale di un elemento in un array.

Inseriamo gli elementi nel vettore e poi chiediamo l’elemento da ricercare per trovarne la posizione o le posizioni (chiaramente si potrebbe anche impostare un array con elementi già inizializzati).

Utilizziamo un ciclo while che continua finché l’array non è terminato oppure finché non trova l’elemento da ricercare.

#include <iostream>
using namespace std;

#define N 10

int main(){
	int a[N];
	int i, valore;

	cout<<"inseriamo gli elementi nell'array: "<<endl;
	for (i=0; i<N; i++){		
		cout<<"inserisci elemento: ";
		cin>>a[i];
	}
	
	cout<<"Quale valore dobbiamo cercare?: ";
	cin>>valore;
	

        i=0;
	while (valore!=a[i] && i<N-1)  i++;
		if (a[i]%valore==0)
			cout<<" valore trovato in posizione: "<<i; 
		else 
			cout<<"valore non presente";
	
	return 0;	
}

Se invece vogliamo vedere se l’elemento si trova in altre posizioni, dobbiamo continuare la ricerca. Allora avremmo potuto scrivere:

	for (i=0; i<N; i++)	
		if (a[i]%valore==0)
			cout<<" valore trovato in posizione: "<<i; 

Ricerca di un numero e dei suoi multipli

Un altro semplice esempio riguarda la ricerca di un numero e dei suoi multipli.

Per realizzare questo semplice algoritmo basterà cambiare la seguente condizione: if (a[i]%valore==0).

Ecco dunque il listato d’esempio sulla ricerca sequenziale in C++.

#include <iostream>
using namespace std;

#define N 10

int main(){
	int a[N];
	int i, valore;

	cout<<"inseriamo gli elementi nell'array: "<<endl;
	for(i=0; i<N; i++){		
		cout<<"inserisci elemento: ";
		cin>>a[i];
	}
	
	cout<<"Quale valore o suo multiplo dobbiamo cercare?: ";
	cin>>valore;
	
	for(i=0; i<N; i++)		
		if(a[i]%valore==0)
			cout<<" valore trovato in posizione: "<<i; 
	return 0;	
}

Ricerca di più elementi in un array

Poniamo questa volta la necessità di voler ricercare più elementi in un vettore.

Se vogliamo trovare più di un elemento in un vettore possiamo utilizzare un altro ciclo for con indice j.

#include <iostream>
using namespace std;

#define N 10

int main(){
	int a[N];
	int n,valore;

	cout<<"inseriamo gli elementi nell'array: "<<endl;
	for(int i=0; i<N; i++){		
		cout<<"inserisci elemento: ";
		cin>>a[i];
	}
	
	cout<<"Quanti numeri dobbiamo cercare?: ";
	cin>>n;
	for(int j=0;j<n;j++) { 
		cout<<"Dammi il numero: ";
		cin>>valore;
		for(i=0; i<N; i++)		
			if(valore==a[i])
				cout<<" valore trovato in posizione: "<<i;
	}
				
	return 0;	
}

Chiaramente questi sono solo dei semplici esempi di ricerca sequenziale in C++ che possono essere implementati anche con altre soluzioni.


Alcuni link utili

Indice argomenti linguaggio C++

Array in C++

Passaggio di parametri per valore o per riferimento

Equazioni di secondo grado in C++

Le variabili globali e loali in C++

Uso delle funzioni in C++

Funzioni in C++

Definizione di funzioni in C++

Libreria cmath

Come usare il for in C++

Massimo tra n numeri in C++

Iterazioni in C++

Ciclo while in C++

Ciclo do while

Operatori logici in C++

Esercizi con switch case in C++

If else in C++

Casting in C++

Successione di Fibonacci in C++