Advertisement
Emanuele_Bruno

Cercare 2 valori uguali in un array

Nov 7th, 2015
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib> // serve a rand;
  3.  
  4.  
  5. using namespace std;
  6.  
  7. int main()
  8. {
  9.     int n;// dichiaro l'input n
  10.     int i;// dichiaro i per usarlo nel ciclo for
  11.     int efficenza=0;// conta quanti cicli occorrono per trovare la risposta
  12.     cout << "Indicare la dimensione 'n' del vettore a[n] con 1<=n<=100 : ";
  13.     cin >> n;
  14.     while (cin.fail() || n<1 || n>100) {
  15.             cout << "Il numero inserito e' errato!\n";
  16.             cout << "Indicare la dimensione 'n' del vettore a[n] con 1<=n<=100 : ";
  17.             cin.clear(); // senza questa istruzione il programma va in tilt con numeri interi >= 2*31
  18.             cin >> n;
  19.             }
  20.  
  21.     int a[n];// array "a" di dimensione "n" di valori interi:conterrà valori randomici compresi tra 1 to n;
  22.     bool b[n];// array "b" di dimensione "n" di valori booleani: ad ogni valore a[n] assegnerò b[a[n]] true;
  23.  
  24.     for (i=0; i<n;i++) {
  25.         a[i]=rand() % n + 1; // assegno dei valori randomici compresi tra 1 to n
  26.         cout << "a[" << i << "]=" << a[i] << "\n";
  27.     }
  28.  
  29.     for (i=0; i<n;i++) b[i]=false; // pulisco l'array b e assegno false;
  30.  
  31.     i=0; // reinizializzo i per il ciclo while che segue
  32.  
  33.     while (i<n) if (b[a[i]]==false) {
  34.         b[a[i]]=true;
  35.         i++;
  36.         efficenza++;
  37.     }
  38.     else {
  39.             cout << "Il valore di a[" << i << "] e' presente 2 volte" << endl;
  40.             cout << "E ci sono voluti " << efficenza << " cicli :D";
  41.             return 0;
  42.     }
  43.     cout << "Spiacente! Nessun valore ripetuto trovato..." << endl;
  44.     cout << "E ci sono voluti " << efficenza << " cicli :D";
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement