Originariamente inviato da Alex'87
???

Le parentesi grafe non sono obbligatore: se non vengono messe le parentesi grafe verrà presa solo la successiva linea di codice.

codice:
for(i = 0; i < n; i++)
   if(a[i - 1] == a[i])
      frequenza = frequenza + 1;
      printf("frequenza: %d\t", frequenza);
Questo for è senza parentesi pertanto solo l'if farà parte del suo corpo. L'if è anch'esso senza parentesi e solo il primo assegnamento farà parte del suo corpo. La chiamata a printf invece è fuori sia dall'if che dal ciclo. In pratica è come se avesse scritto

codice:
for(i = 0; i < n; i++) {
   if(a[i - 1] == a[i]) {
      frequenza = frequenza + 1;
   }
}
printf("frequenza: %d\t", frequenza);
che è chiaramente errato. Più probabilmente intendeva fare una cosa del genere


codice:
for(i = 0; i < n; i++) {
   if(a[i - 1] == a[i]) {
      frequenza = frequenza + 1;
      printf("frequenza: %d\t", frequenza);
   }
}
Il codice è comunque sbagliato (a partire da i - 1 per arrivare al calcolo della frequenza).
Hai ragione per quanto riguarda le parentesi, avevo come sempre letto troppo di fretta e con troppa stanchezza addosso! Chiedo scusa per l'imprecisione!