Come ricercare se un elemento è contenuto in un array in C

In questa lezione viene mostrato come creare un semplice programma in C, in grado di ricercare se un determinato elemento è contenuto all'interno di un array e quante volte compare.

Chiaramente per svolgere l'esercizio abbiamo bisogno di un array con al suo interno dei valori. Per fare ciò abbiamo due possibilità: dichiarare ed inizializzare l'array all'interno del codice, oppure fare inizializzare l'array dall'utente. In questa pagina è stato deciso di implementare la prima versione, in quanto la parte di inizializzazione da parte di un utente è stata mostrata nella pagina "Come riempire un array da tastiera" e non risulta essere fondamentale per la spiegazione.

Per implementare in maniera corretta il programma, abbiamo bisogno di tre variabili. La prima variabile è l'array in cui cercheremo l'elemento, poi abbiamo bisogno di un variabile a cui assegniamo il valore da cercare, mentre la terza variabile servirà per mantenere il conteggio di quante volte l'elemento compare all'interno dell'array.

Per dichairare l'array abbiamo bisogno di indicare la sua dimensione, per far questo utilizziamo una costante DIM definita con la direttiva #define, ed inizializziamo l'array con dei valori:int lista[DIM] = {2, 6, 7, 3, 8, 9, 3, 0, 5, 1};

A questo punto chiediamo all'utente di inserire il valore da cercare all'interno dell'array, e lo assegnamo ad una variabile (nel nostro caso num).

Per poter cercare se un elemento è contenuto all'interno di un array, basta verificare se ciascun elemento contenuto nell'array è uguale al valore cercato, e in tal caso mantenere traccia di quante volte questo accade, incrementando, ad esempio, una variabile (nel nostro caso "cont").

In particolare l'idea è di scorrere l'array e di verificare se l'attuale valore dell'array è uguale al valore cercato. Per fare ciò possiamo utilizzare un ciclo for che parte dal valore 0 fino al valore DIM, ovvero la dimensione dell'array, e verificare ad ogni iterazione se il valore contenuto in quella posizione dell'array è uguale al valore cercato. Se i due valori sono uguali, significa che il valore ricercato è contenuto all'interno dell'array, quindi possiamo incrementare di uno la variabile utilizzata per mantenere il conteggio di quante volte compare, ovvero la variabile "cont".

Al termine del ciclo for, la variabile "cont" indicherà quante volte il valore cercato risulta essere presente all'interno dell'array.

A questo punto non rimane che verificare se la variabile "cont" è maggiore di 0, ed in tal caso stampare che l'elemento cercato è presente all'interno dell'array e che compare cont volte. Mentre se la variabile cont rimane uguale a 0, significa che all'interno dell'array non è presente il valore ricercato.


#include <stdio.h>
#define DIM 10

int main(){
    int lista[DIM] = {2, 6, 7, 3, 8, 9, 3, 0, 5, 1};
    int cont, num;
    
    printf("Inserisci il numero da cercare: ");
    scanf("%d", &num);
    
    cont = 0;
    for(int i = 0; i < DIM; i++){
        if(lista[i] == num)
            cont++;
    }
    
    if(cont <= 0)
        printf("Il numero %d non è presente all'interno dell'array\n", num);
    else
        printf("Il numero %d è contenuto %d volte all'interno dell'array\n", num, cont);

    return 0;
}


Inserisci il numero da cercare: 3 Il numero 3 è contenuto 2 volte all'interno dell'array

Indice pagine linguaggio C: