Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++] Confronto tra elementi di un array e una variabile

    premesso che non sono molto esperto in c++ mentre programmavo ho avuto la necessita per semplificare il codice di confrontare un array con una variabile, cioè avendo un array indicizzato e una variabile dovrei confrontare il valore della variabile con gli elementi dell'array e se un elemento è uguale mi ritorna 'true' se no 'false' .

    per testare la fattibilità ho scritto il codice che segue ma il problema è che mi ritorna sempre 'true'.
    Come posso fare?

    codice:
    #include <iostream> 
    #include <conio.h> 
    
    using namespace std; 
    
    main() 
    { 
    int i; 
    int ar [2]= {'1', '2'}; 
    
    cout << "premi un numero \n"; 
    cin>> i; 
    
    if (i == ar[2]) 
    { 
    cout<< "è presente"; 
    } 
    else 
    { 
    cout<<"non è presente"; 
    
    } 
    getch(); 
    return 0; 
    
    }
    Ultima modifica di revol3600; 10-09-2014 a 20:51

  2. #2
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Ciao,
    l'errore è piuttosto evidente:

    codice:
    if(i == ar[2])

    non ha senso. Di fatto stai confrontando "i" con il terzo (il conteggio parte da zero) elemento dell'array, che nemmeno esiste!

    Per verificare se un valore è presente in un array devi scorrere tutto l'array (ad esempio con un ciclo for) e fare il confronto all'interno del ciclo, cioè elemento per elemento. Esempio:

    codice:
    for(int a=0; a<dimensione_vettore; a++)
    {
        if(i==ar[a])
            /* e' presente */
    }

    Se invece arrivi alla fine del ciclo senza averlo trovato, allora significa che il valore non è presente all'interno dell'array.


  3. #3
    Hai ragione funziona, infatti ho fatto proprio un errore stupido e essendo neofita non avevo pienamente chiaro la sintassi e in parte il funzionamento degli array.
    E se invece volessi aggiungere un loop quando è false che mi richiede di nuovo l'inserimento della variabile "i"sarebbe plausibile con do-while? Perché provando non mi è andata un granché.
    Non so perché non sono molto in forma questi giorni

  4. #4
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Potresti fare una cosa del genere
    codice:
    bool trovato = false;
    do
    {
        < chiedi numero >
        for(...)
        {
            if(...)
                {
                     trovato = true;
                }
        }
    } while(trovato == false);

    Continua a chiederti un numero e a controllarlo fino a quando non ne inserisci uno che è presente nell'array.

  5. #5
    Grazie, il ciclo do-while va bene ma mi sono accorto che nel primo messaggio non mi sono espresso bene in fatti il tuo ciclo con for andava bene ma a me serviva che la variabile venisse confrontata con tutti gli elementi insieme, cioè se ho 9 elementi, per esempio da 1 a 9, non posso dare in input 9 risultando false finché nel ciclo for 'a' diventa uguale a 8, dovrebbe essere alla prima immissione confronta con tutti gli elementi dell'array se lo trova dai true e chiudi do while se no false e ricominci il ciclo do-while con una seconda immissione e così via
    codice:
    #include <iostream>
    #include <conio.h>
    using namespace std;
    main()
    {
         int i;
       int ar [9]= {1, 2 ,3 , 4, 5, 6, 7, 8, 9};
        cout << "premi un numero \n"<<endl;
        bool term = false;
        do      {
                for(int a=0;a<9;a++)
            {  cin >> i;
        if (i == ar[a])
        {
            cout<< "è presente \n"<<endl;
            term = true;
            break;
        }
        else 
        {
        cout<<"non è presente \n"<<endl;
        }
            }
                }while(term = false);
    getch(); 
    return 0;   
    }

  6. #6
    Utente di HTML.it L'avatar di minomic
    Registrato dal
    Nov 2010
    Messaggi
    635
    Infatti non risultava false... Ti avevo detto che appena lo trovi puoi restituire true, ma per restituire false devi aspettare la fine del ciclo! Invece nel secondo messaggio che avevo scritto era una cosa diversa: diciamo che il risultato "false" non veniva accettato e il programma chiedeva un altro numero.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.