NeroReflex

Esercizio_3_8_4_2016

Apr 22nd, 2016
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.50 KB | None | 0 0
  1.  
  2. //se trovo il valore cercato in M[x][0] ritorno x, atrimenti ritorno -1
  3. int trovato(int (*M)[2], int da_trovare, int &trovati) {
  4.     int posizione = -1;
  5.    
  6.     //cero da_trovare nella prima colonna di M (fra quelle popolate)
  7.     for (int j = 0; j < trovati; j++) {
  8.         //se la prima colonna contiene da_trovare memorizzo
  9.         //l'indice della colonna che contiene da_trovare
  10.         if ((M[j][0] == da_trovare) && (posizione == -1)) {
  11.             posizione = j;
  12.            
  13.             //non necessario per il funzionameto,
  14.             //velocizza l'esecuzione del codice
  15.             break;
  16.         }
  17.     }
  18.    
  19.     return posizione;
  20. }
  21.  
  22. //popola M in maniera tale da avere una struttura del tipo: M=
  23. /*
  24.  numero   ripetizioni
  25. +--------+------------+
  26. |   1    |     1      |
  27. +--------+------------+
  28. |   2    |     3      |
  29. +--------+------------+
  30. |   5    |     1      |
  31. +--------+------------+
  32.  
  33. per A = { 1, 2, 5, 2, 2 } e quindi n_el = 5
  34. */
  35. int F(int* A, int n_el, int (*M)[2]) {
  36.     //numero di numeri diversi fra loro in A
  37.     int trovati = 0;
  38.    
  39.     for (int i = 0; i < n_el; i++) {
  40.         int indice = -1;
  41.         if ((indice = trovato(M, A[i], trovati)) == -1) {
  42.             //inserico una nuova entrata nella tabella dei trovati
  43.             M[trovati][0] = A[i];
  44.             M[trovati][1] = 1;
  45.             trovati++;
  46.         } else {
  47.             //incremento il contatore del numero già trovato
  48.             M[indice][1]++;
  49.         }
  50.     }
  51.    
  52.     return trovati;
  53. }
Advertisement
Add Comment
Please, Sign In to add comment