ошибка: поиск имени ‘i’ изменен на ISO для ‘scoping

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

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;
}

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

0

Решение

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

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

Измените это на:

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

Также обратите внимание, что вы никогда не инициализируете Sum,

3

Другие решения

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

Среднее = Сумма / Массив [i];

не имеет смысла.

Что касается ошибки, то вы пытаетесь использовать 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;
}
0

По вопросам рекламы [email protected]