Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Problema con ricerca del valore in un Array
Forum - C/C++ - Problema con ricerca del valore in un Array

Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 17:36
Venerdì, 03/01/2014
Ho creato un programma che, inseriti n numeri, viene chiesto all'utente di inserirne un altro e vedere se è contenuto nell'Array:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #define nmax 100
  3. using namespace std;
  4.  
  5. int main(){
  6.         int valori[nmax], num, search;
  7.  
  8.         cout << "Quanti valori vuoi inserire? "; cin >> num;
  9.  
  10.         cout << "\n\n"
  11.                 "Inserisci i valori dell'array: " << endl;
  12.  
  13.         for (int i = 0; i < num; i++){
  14.                 cin >> valori[i]; //l'utente inserisce i valori
  15.         }
  16.  
  17.         cout << "\nValori inseriti." << endl;
  18.  
  19.         cout << "\nQuale numero vuoi cercare? ";
  20.         cin >> search; //l'utente scrive il numero da cercare
  21.  
  22.  
  23.         for (int p = 0; p < num; p++){
  24.                 if (search == valori[p]){
  25.                         cout << "\nValore trovato!\n";
  26.  
  27.                 }
  28.                 else cout << "\nValore NON trovato!\n";
  29.  
  30.                 return 0;
  31.  
  32.         }
  33.  
  34.         return 0;
  35. }



Il problema è che alla fine il compilatore non riesce a capire se è presente o no e mi scrive più volte valore trovato! o Valore NON trovato!.

Dov'è il problema?
Grazie...

Ultima modifica effettuata da rob il 03/01/2014 alle 17:37


Rob
PM Quote
Avatar
ale.gatti96 (Member)
Pro


Messaggi: 71
Iscritto: 29/11/2011

Segnala al moderatore
Postato alle 17:58
Venerdì, 03/01/2014
Il problema è che tu stampi trovato o non trovato per ogni elemento dell'array, invece devi farlo solo alla fine.
Ad esempio puoi fare così:

Codice sorgente - presumibilmente C/C++

  1. bool trovato = false;
  2. for (int p = 0; p < num; p++)
  3.   if (search == valori[p])
  4.     trovato = true;


Volendo potresti fare ancora meglio uscendo dal for quando trovi l'elemento.

Poi sarebbe meglio controllare che num non sia maggiore di nmax, altrimenti vai fuori dall'array.


PM Quote
Avatar
quello che non so come si chiama (Normal User)
Rookie


Messaggi: 37
Iscritto: 08/01/2013

Segnala al moderatore
Postato alle 19:10
Venerdì, 03/01/2014
Testo quotato

Postato originariamente da rob:
Il problema è che alla fine il compilatore non riesce a capire se è presente o no
  



Il problema è tutto fuorché il compilatore...

Ultima modifica effettuata da quello che non so come si chiama il 03/01/2014 alle 19:10
PM Quote
Avatar
rob (Normal User)
Newbie


Messaggi: 16
Iscritto: 16/11/2013

Segnala al moderatore
Postato alle 15:33
Sabato, 04/01/2014
Risolto, grazie ;)


Rob
PM Quote