Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //se trovo il valore cercato in M[x][0] ritorno x, atrimenti ritorno -1
- int trovato(int (*M)[2], int da_trovare, int &trovati) {
- int posizione = -1;
- //cero da_trovare nella prima colonna di M (fra quelle popolate)
- for (int j = 0; j < trovati; j++) {
- //se la prima colonna contiene da_trovare memorizzo
- //l'indice della colonna che contiene da_trovare
- if ((M[j][0] == da_trovare) && (posizione == -1)) {
- posizione = j;
- //non necessario per il funzionameto,
- //velocizza l'esecuzione del codice
- break;
- }
- }
- return posizione;
- }
- //popola M in maniera tale da avere una struttura del tipo: M=
- /*
- numero ripetizioni
- +--------+------------+
- | 1 | 1 |
- +--------+------------+
- | 2 | 3 |
- +--------+------------+
- | 5 | 1 |
- +--------+------------+
- per A = { 1, 2, 5, 2, 2 } e quindi n_el = 5
- */
- int F(int* A, int n_el, int (*M)[2]) {
- //numero di numeri diversi fra loro in A
- int trovati = 0;
- for (int i = 0; i < n_el; i++) {
- int indice = -1;
- if ((indice = trovato(M, A[i], trovati)) == -1) {
- //inserico una nuova entrata nella tabella dei trovati
- M[trovati][0] = A[i];
- M[trovati][1] = 1;
- trovati++;
- } else {
- //incremento il contatore del numero già trovato
- M[indice][1]++;
- }
- }
- return trovati;
- }
Advertisement
Add Comment
Please, Sign In to add comment