Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
1

Функции для вычисления статистических показателей (в массивах)

18.12.2013, 20:39. Просмотров 759. Ответов 2
Метки нет (Все метки)

Есть массив произвольного размера. Нужно создать функции для вычисления разных параметров, как то среднее арифметическое, дисперсия, и т.д. Как в функцию передать адрес массива и количество элементов? Для начала вернуть среднее арифметическое.

Добавлено через 2 часа 16 минут
вроде так. прошу комменты
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
#include <stdlib.h>
 
#define ARRSIZE 10
 
float avgsum();
 
int main()
{
    float arr_X[ARRSIZE]={2,9,23,-13,45,-3,-24,10,6,7};
    float avg_sum;
    avg_sum=avgsum(arr_X,ARRSIZE);
    printf("avgsum=%f\n",avg_sum);
    return 0;
}
 
float avgsum(float *array_adr, int array_size)
{
    int i;
    float sum=0;
    for (i=0;i<array_size;i++)
    {
        sum+=array_adr[i];
    }
    return(sum / array_size);
}
Добавлено через 22 часа 18 минут
добавил функцию расчета дисперсии и средне квадратичного отклонения. Проверьте?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define ARRSIZE 10
 
float avgsum();
float variance();
float stddev();
 
int main()
{
    float arr_X[ARRSIZE]={2,9,13,12,4,6,14,10,6,7};
    float avg_sum,var,std_dev;
    avg_sum=avgsum(arr_X,ARRSIZE);
    printf("avgsum=%f\n",avg_sum);
    var=variance(arr_X,ARRSIZE);
    printf("variance=%f\n",var);
    std_dev=stddev(arr_X,ARRSIZE);
    printf("std_dev=%f\n",std_dev);
    return 0;
}
 
float avgsum(float *array_adr, int array_size)
{
    int i;
    float sum=0;
    for (i=0;i<array_size;i++)
    {
        sum+=array_adr[i];
    }
    return(sum / array_size);
}
 
float variance(float *array_adr, int array_size)
{
    int i;
    float sumsqare=0;
    float mean=avgsum(array_adr,ARRSIZE);
    for (i=0;i<array_size;i++)
    {
        sumsqare+=(array_adr[i]-mean)*(array_adr[i]-mean);
    }
    return(sumsqare / array_size);
}
 
float stddev(float *array_adr, int array_size)
{
    return ( sqrt(variance(array_adr,ARRSIZE)) );
}
результат:
avgsum=8.300000
variance=14.210000
std_dev=3.769615
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.12.2013, 20:39
Ответы с готовыми решениями:

Составить блок-схему, алгоритм вычисления и программу для вычисления значения кусочно заданной функции
помогите решить

Составить блок-схему, алгоритм вычисления и программу для вычисления значения кусочно заданной функции
помогите пожалуйста =) заранее благодарен =) П.5.19.Правил Запрещено создавать темы в виде ссылок...

Вычисления в массивах
Народ помогите решить задачу: Sub Отношение() Dim massiv_1, massiv_2, massiv_3, massiv_4,...

Подсчитать сумму и среднее арифметическое в трёх массивах, использовав две функции для ввода и анализа их
Здравствуйте. Ломаю голову, нужна помощь. Текст задания следующий: Даны три одномерные массивы,...

2
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
19.12.2013, 21:54  [ТС] 2
Новое задание: Заданы два массива. Найти ковариацию и корреляцию (коэффициент корреляции).
0
31 / 31 / 5
Регистрация: 05.02.2013
Сообщений: 245
Записей в блоге: 8
21.12.2013, 00:54  [ТС] 3
Получилось. Решил в программе и решил онлайн, результаты сходятся.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define ARRSIZE 10
 
float avgsum(); // среднее арифметическое
float variance(); // дисперсия
float stddev(); // стандартное среднеквадратичное отклонение
float cov(); // ковариация
float pirson(); // коэффициент корреляции Пирсона
 
int main()
{
    float arr_X[ARRSIZE]={2,9,13,12,4,6,14,10,6,7};
    float arr_Y[ARRSIZE]={8,1,10,5,6,34,23,64,2,4};
    float avg_sum,var,std_dev;
    avg_sum=avgsum(arr_X,ARRSIZE);
    printf("avgsum X = %f\n",avg_sum);
    printf("avgsum Y = %f\n",avgsum(arr_Y,ARRSIZE));
 
    var=variance(arr_X,ARRSIZE);
    printf("variance X = %f\n",var);
    printf("variance Y = %f\n",variance(arr_Y,ARRSIZE));
 
    std_dev=stddev(arr_X,ARRSIZE);
    printf("std_dev X = %f\n",std_dev);
    printf("std_dev Y = %f\n",stddev(arr_Y,ARRSIZE));
 
    printf("covariation (X,Y) = %f\n",cov(arr_X,arr_Y,ARRSIZE));
 
    printf("correlation (X,Y) = %f\n",pirson(arr_X,arr_Y,ARRSIZE));
 
    return 0;
}
 
float avgsum(float *array_adr, int array_size)
{
    int i;
    float sum=0;
    for (i=0;i<array_size;i++)
    {
        sum+=array_adr[i];
    }
    return(sum / array_size);
}
 
float variance(float *array_adr, int array_size)
{
    int i;
    float sumsqare=0;
    float mean=avgsum(array_adr,ARRSIZE);
    for (i=0;i<array_size;i++)
    {
        sumsqare+=(array_adr[i]-mean)*(array_adr[i]-mean);
    }
    return(sumsqare / array_size);
}
 
float stddev(float *array_adr, int array_size)
{
    return ( sqrt(variance(array_adr,ARRSIZE)) );
}
 
float cov(float *array_adr1, float *array_adr2, int array_size)
{
    int i=0;
    float mean1=avgsum(array_adr1,array_size);
    float mean2=avgsum(array_adr2,array_size);
    float producedelta=0;
    for (i=0;i<array_size;i++)
    {
        producedelta+=(array_adr1[i]-mean1)*(array_adr2[i]-mean2);
    }
    return (producedelta/array_size);
}
 
float pirson(float *array_adr1, float *array_adr2, int array_size)
{
    int i;
    float covariat, deviation1, deviation2;
    covariat = cov(array_adr1,array_adr2,array_size);
    deviation1 = stddev(array_adr1,array_size);
    deviation2 = stddev(array_adr2,array_size);
    return (covariat/(deviation1*deviation2));
}
Функции для вычисления статистических показателей (в массивах)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2013, 00:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Поэлементные вычисления в массивах
здравствуйте. матлаб только начал изучать., поэтому возможно вопрос нубский имеются 2 массива ...

Вычисления в массивах и матрицах
Написать программу, которая вычисляет силу тока в электрической цепи. Форма, реализующая интерфейс...

Составить программу для вычисления значения функции y=ln(1+x) разложением функции в степенной ряд
вычислить с точностью E: y=ln(1+x)=x-x 2\2+x 3\3+.+(-1) (n-1)x n\n+ как это делать, кто знает?

Выбрать алгоритм и составить его блок-схему для вычисления значения указанной функции.Составить программу вычисления
Пожалуйста,помогите!!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.