View Full Version : [C++] Mediana e Moda (Statistica)
kane_alfa
08-02-2007, 18:01
Devo affrontare un problema per un esercizio di statistica in c++
L'esercio sarebbe di trovare la mediana nei numeri dati in input
Tutto questo facendo le frequenze cumulate
Qualcuno può aiutarmi a programmare questo problema in c++????
Grazie a tutti quelli che si interesseranno
Ciaooo
Lo scopo del esercizio è imparare il C++ o fare un programma per la statistica ? Te lo chiedo perchè a seconda della risposta ti indirizzerei a soluzioni diverse.
Comunque principalmente si tratta di prendere in input l'insieme dei valori accompagnati dalla frequenza ed andarli ad inserire in un vettore. Poi ordini il vettore, prima per il valore ed individui il valore centrale (basta sommare la frequenza fino a raggiungere il totale / 2) della distribuzione (mediana) e poi ordini per la frequenza ed il valore corrispondente alla frequenza massima è la moda.
kane_alfa
08-02-2007, 18:48
Per tutti e due i motivi
ma sono gia una settimana che ci sbatto ma non mi riesce
Se qualcuno mi può dare il sorgente lo ringrazio
Qui è buon uso non fare esercizi per intero, anche perchè altrimenti non impareresti niente.
Intanto comincia a fare l'input degli elementi. Poi ci fai vedere a cosa sei arrivato.
Comunque il mio discorso iniziale era per dirti che non so cosa ti posso consigliare o meno di usare. Ad esempio la classe vector e l'algoritmo sort lo puoi usare ?
kane_alfa
08-02-2007, 20:09
si posso usare tutto quello che vuoi
Allora è semplicissimo... Fai un vettore di strutture...
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 è:
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 è:
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.