Массив: Вычисление среднего арифметического и дисперсии элементов массива

небритый еж

Здравствуйте, погуглив,понял,что это за пределами моих возможностей. пожалуйста,помогите написать маленький код... нужно,чтобы программа загрузила 5 реальных чисел,вложила(сохранила,уложила??) их в массив и вычислила их среднее арифметическое и дисперсию(http://en.wikipedia.org/wiki/Variance). надеюсь на вас.спасибо.
5 ответов

небритый еж

****** avg(****** *a, size_t count)
{
    ****** res = 0.0;
    int i;
    for (i = 0; i < count; i++)
        res += a[i];
    return res / count;
}


небритый еж

Пaтрик, эмм...это как работает?


небритый еж

Здравствуйте, погуглив,понял,что это за пределами моих возможностей. пожалуйста,помогите написать маленький код... нужно,чтобы программа загрузила 5 реальных чисел,вложила(сохранила,уложила??) их в массив и вычислила их среднее арифметическое и дисперсию(http://en.wikipedia.org/wiki/Variance). надеюсь на вас.спасибо.
Что вы понимаете под дисперсией вашем случае (какую именно?), сформулируйте четко постановку задачи. Код, который вам выложили, просто считает среднее арифметическое в массиве.


небритый еж

vua72, дисперсия=разброс чисел=среднее квадратическое отклонение..примерно так.я просто с другого языка перевожу.поэтому такие несовпадения..


небритый еж

****** sum(******* arr, size_t siz)
{
    ****** s = 0.0;
    while( siz-- ) {
        s += *arr++;
    }
    return s;
}
 
****** average(******* arr, size_t siz)
{
    return sum(arr, siz) / (******)siz;
}
 
****** square(****** x)
{
    return x * x;
}
 
****** variance(******* arr, size_t siz)
{
    ****** expected = average(arr, siz);
    ****** v = 0.0;
    ****** n = (******)siz;
    while( siz-- ) {
        v += square(expected - *arr++);
    }
    return v / n;
}