qualcuno mi saprebbe dire come:
dato un array A[N], trovare l'elemento più frequente. grazie.
qualcuno mi saprebbe dire come:
dato un array A[N], trovare l'elemento più frequente. grazie.
cicli gli elementi e vedi quello che capita + volte
Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te
vorrei sapere il codice che devo scrivere nel compilatore
Fossi in te farei prima di tutto un bel sort dell'array, e poi ti conti quante volte compare ogni valore...
Per contare:
tipo Ris[N*2];
int j=0;
for(int i=0;i<N;i++)
{
if(Ris[j]==VettOrd[i];
Ris[j+1]++;
else
{
j+=2;
Ris[j+1]=0;
Ris[j]=VettOrd[i];
}
}
A questo punto nel vettore Ris[] hai il valore affiancato dal numero di occorrenze (posizione pari il valore, posizione dispari il numero di occorrenze). Per sapere quanti valori diversi ci sono nel vettore basta che dividi j per 2;
Spero di essere stato chiaro (dubito...nn sono neanche sicuro che la soluzione sia giusta, ma lo buttata giù in due secondi...probabilmente si potrebbe migliorare)
Su un array ordinato mi viene in mente una soluzione "stravagante"..
Facciamo conto:
Il primo 1 ha indice 0;codice:int array[] = { 1, 1, 1, 2, 3, 3, 4, 4, 4, 4, 5, 5, 5 };
Il primo 2 ha indice 3;
Il primo 3 ha indice 4;
Il primo 4 ha indice 6;
Il primo 5 ha indice 10.
3 - 0 = frequenza di 1;
4 - 3 = frequenza di 2;
6 - 4 = frequenza di 3;
10 - 6 = frequenza di 5.
E` un po` palloso e al momento non ho molta voglia di scrivere codice, quindi vedi un po`. Tanto e` semplicissimo.
Ciao.