2014-12-11 5 views
-3

Привет Я новичок в языке c и когда компилирую текущий код для поиска дисперсии, я получаю следующую ошибку: ожидаемое выражение перед ']' токеном var = var + pow ((x [] - my_mean (n, double x [])), 2); #include #include double my_var (int n, double x []); double my_mean (int n, double x []); double my_sum (int n, double x []);Процедура сортировки пузырьков

int main (void) 
{ 
    int n=5; 
double x[]={4, 6, 2, 7, 9}; 
    my_var(n,x); 
    return 0; 
} 
double my_mean(int n , double x[]) 
{ 
    return my_sum(n, x)/ n; 
} 
double my_sum(int n , double x[]) 
{ 
    int i; 
    double s=0; 
    for(i= 0; i<n ;i++) 
    { 
     s = s + x[i]; 
    } 
    return s; 
} 

double my_var(int n, double x[]) 
{ 
    double var; 
    int i; 
    for (i=0;i<n;i++) 
    { 
     var=var+pow((x[]-my_mean(int n,double x[])),2); 
    } 
    return var; 
} 
+1

компилятор сказал вам, что вы должны знать, чтобы исправить это. Вы что-то пробовали? – nouney

+0

Кстати, в 'my_var' я подозреваю, что вы хотели рассчитать' my_mean' только один раз и сохранить его в переменной, которая будет использоваться в цикле. –

ответ

0

Вы забыли использовать индекс цикла. Кроме того, удалите типы из своего вызова.

var=var+pow((x[i]-my_mean(n,x[i])),2); 
+0

Тип второго параметра для 'my_mean' является * массивом *' double', а не 'double';) –

1

Okk .. У меня что-то разобрался с вами код .. Посмотрите ::

#include <stdio.h> 
#include <math.h> 
double my_var(int n, double x[]); 
double my_mean(int n, double x[]); 
double my_sum(int n, double x[]); 

int main (void) 
{ 
    int n=5; 
    double x[]={4, 6, 2, 7, 9}; 
    printf("%f",my_var(n,x)); 
    return 0; 
} 
double my_mean(int n , double x[]) 
{ 
    return my_sum(n, x)/ n; 
} 
double my_sum(int n , double x[]) 
{ 
    int i; 
    double s=0; 
    for(i= 0; i<n ;i++) 
    { 
     s = s + x[i]; 
    } 
    return s; 
} 

double my_var(int n, double x[]) 
{ 
    double var=0; 
    int i; 
    for (i=0;i<n;i++) 
    { 
     var=var+pow((x[i]-my_mean(n,x)),2); 
    } 
    return var; 
} 

добавлен оператор печати в конце main проверить результат. В цикле for вашего кода в функции double my_var(int n, double x[]) у вас есть оператор: var=var+pow((x[]-my_mean(int n,double x[])),2);, во-первых, вы не можете указывать типы данных в вызовах функций. Кроме того, в функции pow вы пишете (x[]-my_mean(int n,double x[])),2, вместо x[] это должно быть x[i], вам нужно указать индекс.

Надеюсь, это поможет.

1

и когда вы включаете math.h в вашей программе, то вы должны скомпилировать его с помощью команды «НКУ my_program.c -o my_program -lm»

Смежные вопросы