Массив: Вычисление среднего арифметического и дисперсии элементов массива - C (СИ)
Формулировка задачи:
Здравствуйте,
погуглив,понял,что это за пределами моих возможностей.
пожалуйста,помогите написать маленький код...
нужно,чтобы программа загрузила 5 реальных чисел,вложила(сохранила,уложила??) их в массив и вычислила их среднее арифметическое и дисперсию(http://en.wikipedia.org/wiki/Variance).
надеюсь на вас.спасибо.
Решение задачи: «Массив: Вычисление среднего арифметического и дисперсии элементов массива»
textual
Листинг программы
double sum(double* arr, size_t siz)
{
double s = 0.0;
while( siz-- ) {
s += *arr++;
}
return s;
}
double average(double* arr, size_t siz)
{
return sum(arr, siz) / (double)siz;
}
double square(double x)
{
return x * x;
}
double variance(double* arr, size_t siz)
{
double expected = average(arr, siz);
double v = 0.0;
double n = (double)siz;
while( siz-- ) {
v += square(expected - *arr++);
}
return v / n;
}
Объяснение кода листинга программы
- В функции
sumпроисходит вычисление суммы элементов массива, начиная с первого и до последнего, с использованием циклаwhile. Переменнаяsинициализируется значением 0.0 и увеличивается на каждом шаге цикла на значение текущего элемента массива, начиная с*arr++. - В функции
averageпроисходит вычисление среднего арифметического элементов массива, используя функциюsum. Результатsumделится на размер массива (siz). - В функции
squareпроисходит вычисление квадрата числа. - В функции
varianceпроисходит вычисление дисперсии элементов массива. Сначала находится среднее значение (expected) с использованием функцииaverage. Затем, в циклеwhile, происходит вычисление квадрата разности между каждым элементом массива и средним значением, и результат добавляется к переменнойv. Итерация цикла продолжается до тех пор, пока все элементы массива не будут обработаны. После этого значение переменнойvделится на размер массива (n), чтобы получить дисперсию.