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]; // Dichiarazione di un array di dimensione N
int i, valore; // Dichiarazione di variabili intere per l'indice e il valore da cercare
// Inserimento degli elementi nell'array
cout << "Inseriamo gli elementi nell'array:" << endl;
for (i = 0; i < N; i++) {
cout << "Inserisci elemento: ";
cin >> a[i];
}
// Richiesta del valore da cercare
cout << "Quale valore dobbiamo cercare?: ";
cin >> valore;
i = 0;
// Ciclo while per cercare il valore nell'array
while (valore != a[i] && i < N - 1) {
i++;
}
// Verifica se il valore è stato trovato e se è divisibile per il valore cercato
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]; // Dichiarazione di un array di dimensione N
int i, valore; // Dichiarazione di variabili intere per l'indice e il valore da cercare
// Inserimento degli elementi nell'array
cout << "Inseriamo gli elementi nell'array:" << endl;
for (i = 0; i < N; i++) {
cout << "Inserisci elemento: ";
cin >> a[i];
}
// Richiesta del valore o del suo multiplo da cercare
cout << "Quale valore o suo multiplo dobbiamo cercare?: ";
cin >> valore;
// Ciclo per scorrere gli elementi dell'array
for (i = 0; i < N; i++) {
// Verifica se l'elemento è un multiplo del valore cercato
if (a[i] % valore == 0) {
cout << "Valore trovato in posizione: " << i << endl;
}
}
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]; // Dichiarazione di un array di dimensione N
int n, valore; // Dichiarazione di variabili per il numero di valori da cercare e il valore da cercare
// Inserimento degli elementi nell'array
cout << "Inseriamo gli elementi nell'array:" << endl;
for (int i = 0; i < N; i++) {
cout << "Inserisci elemento: ";
cin >> a[i];
}
// Richiesta del numero di valori da cercare
cout << "Quanti numeri dobbiamo cercare?: ";
cin >> n;
// Ciclo per ciascun valore da cercare
for (int j = 0; j < n; j++) {
cout << "Dammi il numero: ";
cin >> valore;
// Ciclo per scorrere gli elementi dell'array e cercare il valore
for (int i = 0; i < N; i++) {
if (valore == a[i]) {
cout << "Valore trovato in posizione: " << i << endl;
}
}
}
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++
Passaggio di parametri per valore o per riferimento
Equazioni di secondo grado in C++
Le variabili globali e loali in C++
Definizione di funzioni in C++
Esercizi con switch case in C++
Successione di Fibonacci in C++