Caricare N numeri e dire se sono tutti pari. La ricerca deve interrompersi al primo dispari trovato.

[SOL] Esercizio nr 39 Array (39_Array)


Spiegazione del Codice - Esercizio 39

Obiettivo del Programma

Questo programma verifica se in un array di 5 numeri interi esiste almeno un numero dispari. Se trova anche solo un numero dispari, comunica che "I numeri non sono tutti pari".

Analisi del Codice

Dichiarazione delle Variabili

const int DIM = 5;
int a[DIM];
  • DIM è una costante che definisce la dimensione dell'array (5 elementi)
  • a[DIM] è un array di 5 numeri interi

Caricamento dei Dati

for(int i = 0; i<DIM; i++){
    cout << "inserire il numero"<<i+1<<" : ";
    cin >>a[i];
}

Il programma chiede all'utente di inserire 5 numeri, uno alla volta:

  • Il ciclo for si ripete 5 volte (da i=0 a i=4)
  • i+1 viene usato per mostrare "numero 1", "numero 2", ecc. (più comprensibile per l'utente)
  • Ogni numero viene memorizzato nella posizione corrispondente dell'array

Controllo dei Numeri Dispari

bool existDispari = false;
for(int i = 0; i<DIM; i++){
    if(a[i] % 2 != 0){
        existDispari = true;
        break;
    }
}

Variabile di controllo:

  • existDispari è inizializzata a false (assumiamo che non ci siano dispari)

Logica del controllo:

  • Il programma esamina ogni elemento dell'array
  • a[i] % 2 != 0 verifica se il numero è dispari:
    • L'operatore % calcola il resto della divisione per 2
    • Se il resto è diverso da 0, il numero è dispari
  • Appena trova un numero dispari:
    • Imposta existDispari = true
    • Usa break per uscire immediatamente dal ciclo (ottimizzazione)

Output del Risultato

if(existDispari){
    cout << "I numeri non sono tutti pari";
}
  • Se è stato trovato almeno un numero dispari, stampa il messaggio
  • Nota: Il programma non stampa nulla se tutti i numeri sono pari

Esempio di Esecuzione

Input: 2, 4, 7, 8, 10

  • Il programma trova il numero 7 (dispari) e stampa: "I numeri non sono tutti pari"

Input: 2, 4, 6, 8, 10

  • Tutti i numeri sono pari, quindi non viene stampato nulla

Possibili Miglioramenti

Il programma potrebbe essere completato aggiungendo un messaggio anche per il caso in cui tutti i numeri sono pari:

if(existDispari){
    cout << "I numeri non sono tutti pari";
} else {
    cout << "Tutti i numeri sono pari";
}

Correzione esercizio 39

#include <iostream>
using namespace std;

int main(){
    const int DIM = 5;
    int a[DIM];

    //caricamento
    for(int i = 0; i<DIM; i++){
        cout << "inserire il numero"<<i+1<<" : ";
        cin >>a[i];
    }

    bool existDispari = false;
    for(int i = 0; i<DIM; i++){
        if(a[i] % 2 != 0){
            existDispari = true;
            break;
        }
    }

    if(existDispari){
        cout << "I numeri non sono tutti pari";
    }
}