Advertisement
RiccardoM

Esercizio 2 G. Filè [21-10-2014]

Oct 31st, 2014
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.79 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. main(){
  6.  
  7.   int A[20], n, N=0;
  8.  
  9.   cout << "Inserisci valori: " << endl;     //Chiedo di inserire il valore
  10.   cin >> n;                                 //Leggo valore
  11.    
  12.  
  13.   //PRE_1=(cin contiene (almeno) 20 interi) || (cin contiene 0)
  14.  
  15.   while (N<20 && n!=0){                    
  16.     A[N] = n;                               //Pongo in A[N] il valore letto
  17.     N = N+1;                                //Aumento N
  18.     if (N<20)   //Altrimenti verrebbe fatta anche la lettura quando N=20 (e quindi la 21esima), ma non verrebbe inserita in A[] perchè sarebbe pieno
  19.       cin >> n;                             //Leggo un altro valore
  20.   }
  21.  
  22.   //POST_1=((se cin contiene (almeno) 20 valori senza 0) => (A sarà riempito con i primi 20 valori di cin e N=20)) && ((se cin contiene 0 preceduto da 0<=n<20 valori diversi da 0) => (A contiene i primi n valori di cin e N=n))
  23.  
  24.  
  25.   /* PARTE 2 */
  26.  
  27.   //PRE_2=(A[0..N-1] contiene N valori con N>=0)
  28.  
  29.   int i=0, D=0;
  30.  
  31.   while (i<N){          //R = (D = numero di valori distinti in A[0..i-1] && (0<=i<=N))
  32.     bool no=true;   //"no" indica se i valori sono distinti tra loro
  33.     int j=0;
  34.  
  35.     while (j<i && no == true){
  36.       if (A[i] == A[j]) //R1 = (no == true <=> A[i] non e' contenuta in A[0..j-1]
  37.         no=false;
  38.      
  39.       j = j+1;
  40.     }
  41.     /* Questo ciclo controlla che tutti i valori di A[j] con j<i siano diversi da A[i] */
  42.    
  43.    
  44.    
  45.     if (no == true)
  46.       D = D+1;
  47.  
  48.     i = i+1;
  49.   }
  50.   /* Questo ciclo controlla che tutti i valori di A[i] con i<N siano diversi da A[N] */
  51.  
  52.  
  53.  
  54.   //POST_2=(viene calcolato in D il numero di valori distinti in A[0..N-1]
  55.  
  56.   cout << "Numero valori inseriti: " << N << endl;
  57.   cout << "Numero valori differenti: " << D <<endl;
  58.  
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement