Ritorna alla pagina del corso.

Questa pagina contiene gli esercizi proposti in laboratorio e -alcune- delle soluzioni proposte.
Si suggerisce di provare a risolvere gli esercizi e solo in un secondo tempo di confrontare quanto fatto con le soluzioni proposte.

01: /*
02: come il (2) in cui perĂ² prima della stampa si eliminino gli
03: elementi duplicati
04: SOLUZIONE OTTIMIZZATA PIU' RAPIDA CON ARRAY GRANDI
05: 
06: */
07: 
08: #include<stdio.h>
09: #include<stdlib.h>
10: #include<time.h>
11: 
12: #define ASIZE (100000)
13: #define NOTVALID (0)
14: 
15: int main(int argc, char **argv){
16: 
17:   srand(time(0));
18: 
19:   unsigned short a[ASIZE];
20: 
21:   for(int i = 0; i < ASIZE; ++i)
22:   {
23:     a[i] = 10 + rand() % 71;
24:   }
25: 
26:   // devo analizzare nuovamente tutti gli elementi 
27:   // e per ciascuno trovare se vi siano o meno doppioni
28:   // ed eliminare i doppioni
29:   int count = 0; // DEBUG: quante iterazioni ho?
30:   for(int i = 0; i < ASIZE - 1; ++i) // ciclo su tutti gli elementi   e li confronto 
31:              // con i successivi inutile arrivare fino all'ultimo visto che non ha elementi dopo
32:   {
33:     if(a[i] == NOTVALID)             // se l'elemento in esame eraz gia' stato "eliminato" inutile ricercarlo come doppione
34:     {                                // ripeto immediatamente il ciclo ovvero mi fermo qui e "salto" all'aggiornamento
35:       ++count;
36:       continue;                      
37:     }
38:     for(int j =  i + 1; j < ASIZE; ++j) // ciclo per gli elementi seguenti a quello di indice i
39:     {
40:       ++count; // per contare le iterazioni devo incrementare il contatore all'interno del ciclo piu' interno
41:       if(a[j] == a[i])
42:   a[j] = NOTVALID;
43:     }
44:   }
45: 
46: 
47: 
48:   for(int i = 0; i < ASIZE; ++i)
49:   {
50:     if(a[i] != NOTVALID)
51:       printf("L'elemento di indice #%d vale %u\n", i, a[i]);
52:   }
53: 
54:   printf("DEBUG: ho ripetuto i cicli di ricerca dei numeri doppi %d volte\n", count);
55:   return 0;
56: }
57: 
58: