Contare i numeri positivi e negativi contenuti in un array in C

Nella seguente pagina viene riportato un possibile programma in C in grado di svolgere l'esercizio di contare i numeri positivi, negativi e nulli contenuti all'interno di un array.

L'esercizio risulta essere molto simile all'esercizio svolto nella pagina "Come contare i numeri positivi e negativi in C", con l'unica differenza che nell'attuale esercizio i numeri sono contenuti all'interno di un array. Di conseguenza il concetto che sta alla base della corretta esecuzione del programma rimane lo stesso.

Per dichiarare in maniera regolare gli array, abbiamo bisogno di dichiarare la loro dimensione, ovvero quanti elementi possono essere contenuti al loro interno. Per questo motivo definiamo una costante N con la direttiva #define a cui assegniamo un valore intero

A questo punto possiamo inizializzare l'array in due modi principali: inizializzarlo in maniera diretta nel codice o chiedere all'utente di inserire gli N elementi. Nel nostro caso è stato scelto di utilizzare il primo metodo, di conseguenza dichiariamo ed inizializziamo il seguente array di interi:int valori[N] = {3, 5, -1, -6, 0};

Una volta inizializzato, possiamo procedere scorrendo l'array e verificare se ciascun valore contenuto in esso sia maggiore o minore di zero. Per mantenere traccia di quanti elementi contenuti nell'array siano positivi e negativi, dichiariamo due variabili di interi.
Per poter scorrere l'array dobbiamo fare uso di un ciclo, in questo è stato scelto di utilizzare il ciclo while, ma può essere ottenuto lo stesso risultato usando il ciclo for o il ciclo do while.

La cosa importante è che ad ogni iterazione venga verificato con l'istruzione if, se il numero nella posizione attuale risulta essere maggiore o minore di zero, e conseguentemente incrementare la rispettiva variabile.

Al termine del ciclo while, le due variabili utilizzate conterranno il numero di valori positivi e negativi contenuti all'interno dell'array. Non rimane che stampare a schermo con la funzione printf i due valori. Dato che sappiamo il numero di valori contenuti nell'array (cioè N), possiamo conteggiare il numero di valori nulli sottraendo semplicemente dal valore della costante N, i numeri positivi e negativi.


#include <stdio.h>
#define N 5

int main(){
    int valori[N] = {3, 5, -1, -6, 0};
    int i, pos, neg;
    
    i = 0;
    pos = 0;
    neg = 0;
    while(i<N){
        if(valori[i] > 0)
            pos++;
        else if(valori[i] < 0)
            neg++;
            
        i++;
    }
    
    printf("Nell'array ci sono: \n");
    printf("- %d numeri/o positivi\n", pos);
    printf("- %d numeri/o negativi\n", neg);
    printf("- %d numeri/o nulli\n", N - pos - neg);

    return 0;
}


Nell'array ci sono: - 2 numeri/o positivi - 2 numeri/o negativi - 1 numeri/o nulli

Indice pagine linguaggio C: