Oppure

Loading
03/01/14 16:36
rob
Ho creato un programma che, inseriti n numeri, viene chiesto all'utente di inserirne un altro e vedere se è contenuto nell'Array:

#include <iostream>
#define nmax 100
using namespace std;

int main(){
	int valori[nmax], num, search;

	cout << "Quanti valori vuoi inserire? "; cin >> num;

	cout << "\n\n"
		"Inserisci i valori dell'array: " << endl;

	for (int i = 0; i < num; i++){
		cin >> valori[i]; //l'utente inserisce i valori
	}

	cout << "\nValori inseriti." << endl;

	cout << "\nQuale numero vuoi cercare? "; 
        cin >> search; //l'utente scrive il numero da cercare


	for (int p = 0; p < num; p++){
		if (search == valori[p]){
			cout << "\nValore trovato!\n";

		}
		else cout << "\nValore NON trovato!\n";

		return 0;

	}

	return 0;
}


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 03/01/14 16:37
aaa
03/01/14 16:58
ale.gatti96
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ì:

bool trovato = false;
for (int p = 0; p < num; p++)
  if (search == valori[p])
    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.
aaa
03/01/14 18:10
quello che non so come si chiama
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 03/01/14 18:10
aaa
04/01/14 14:33
rob
Risolto, grazie ;)
aaa