2014-10-24 3 views
0

Я просмотрел другие темы, подобные этому, и до сих пор не могу узнать, что не так с моим кодом. Ниже приведена функция в моей программе, чтобы найти Среднее (Среднее) Массивов. Я получаю ошибку в названии: ошибка: поиск имени в «я» изменился ISO „для“ обзорного следующее с пометкой:., Если вы используете „-fpermissize“ г ++ примет ваш кодошибка: имя поиска 'i' изменено для ISO 'for' scoping

double GetMean (double Array[], int ArrayLength) 
{ 
    int Sum, Mean; 
    for (int i = 0; i < ArrayLength; i++) 
    { 
     Sum = Sum + Array[i]; 
    } 

    Mean = Sum/Array[i]; 

    return Mean; 
} 

Идеи и объяснение было бы прекрасно, так что я могу понять, что, черт возьми, я делаю неправильно:/

ответ

2
for (int i = 0; i < ArrayLength; i++) 

при определении i в for заголовок, как это, сфера его применения внутри цикла for вы не можете использовать его. вне цикла for, как Mean = Sum/Array[i]; в вашем коде.

Изменить его:

int i; 
for (i = 0; i < ArrayLength; i++) 

Кроме того, обратите внимание, что вы никогда не инициализировать Sum.

+0

Спасибо так много. Меня разочаровывает, что именно эта небольшая строка вызвала эту большую проблему. – Tony

0

Это утверждение

Среднее = Sum/Array [я];

не имеет никакого смысла.

Что касается ошибки, вы пытаетесь использовать varaible i в выражении Array [i] в ​​вышесказанном выше объеме. Он определяется только внутри цикла.

Также вы забыли инициализировать переменную Sum, и я думаю, что она должна иметь тип double.

Функция может выглядеть

double GetMean(const double Array[], int ArrayLength) 
{ 
    double Sum = 0.0; 

    for (int i = 0; i < ArrayLength; i++) 
    { 
     Sum = Sum + Array[i]; 
    } 

    return ArrayLength == 0 ? 0.0 : Sum/ArrayLength; 
}