Allora è semplicissimo... Fai un vettore di strutture...
Codice:
struct data
{
int value;
int frequency;
};
vector<data> v;
Riempi i vari elementi di v presi dall'input e poi usi sort per ordinare per valore...
sort(v.begin(), v.end(), sortByValue);
Dove sortByValue è:
Codice:
bool sortByValue(data elem1, data elem2)
{
return elem1.value > elem2.value;
}
Mentre per ordinare per frequenza dopo che hai trovato la mediana:
sort(v.begin(), v.end(), sortByFrequency);
Dove sortByFrequency è:
Codice:
bool sortByFrequency(data elem1, data elem2)
{
return elem1.frequency > elem2.frequency;
}
L'elemento con frequenza massima è la moda.
PS: l'elemento con frequenza massima lo potresti anche rilevare durante l'inserimento. Ogni volta che inserisci un elementi guardi se la sua frequenza è maggiore di quella dell'elemento con la frequenza più alta, in caso positivo aggiorni con il nuovo elemento