codice:
for (i=0; i<=n-1 ;i++) // i<n-1 ,altrimenti confronti a[n-1] con a[n], ma a[n] non è stato allocato
{
if (a[i]==a[i+1])
cont=cont+1;
}
Questo codice non calcola quante volte si ripete un valore, ma calcola quante volte due valori adiacenti dell' array sono uguali.
La condizione:
Risulta vera se e solo se due elementi adiacenti si ripetono.
Se ad esempio a[1]=5 e a[3]=5, con questo algoritmo ciò non viene contato come una ripetizione.
Se vuoi calcolare quante volte due numeri generici si ripetono,l' algoritmo deve essere quadratico:
codice:
for(j=0;j<n-1;i++)
for(i=0;i<n-1;i++)
if(a[j]==a[i])
cont++;
Se invece vuoi calcolare quale valore si ripete di più (ad esempio contare quante volte si ripete il 7),allora ti conviene creare una struttura che contiene il numero, e quante volte si ripete:
codice:
typedef struct
{
int num;
int rip;
}valore;
Scandisci tutto l' array, ogni volta che trovi un valore verifichi se non sia già presente nelle strutture, se è già presente incrementi rip, altrimenti crei una struttura nuova con rip=1.