错误:'''的名称查找已更改为ISO'用于'范围界定'

时间:2014-10-24 16:25:53

标签: c++ arrays function average mean

我已经查看了与此类似的其他主题,仍然无法找出我的代码有什么问题。以下是我程序中的一个函数,用于查找数组的平均值(Average)。我在标题中收到错误:错误:名称查找' i"因ISO而改为'作用域。以下注意事项:如果您使用' -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;
}

想法和解释会很可爱所以我能理解我到底做错了什么:/

3 个答案:

答案 0 :(得分:3)

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

当您在i标头中定义for时,其范围位于for循环内。您不能在for循环之外的代码中使用它Mean = Sum / Array[i];

将其更改为:

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

另请注意,您永远不会初始化Sum

答案 1 :(得分:0)

本声明

Mean = Sum / Array [i];

毫无意义。

至于错误,那么你试图在其范围之外的上述语句中使用表达式Array [i]中的变量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;
}

答案 2 :(得分:0)

提到的所有注释都是指您的代码。 我已经改正了。看看。

double GetMean ( double Array[], int ArrayLength )
{
    int i;
    double Mean,Sum=0;                                //You must initialise Sum=0 and you should declare Mean and Sum as double otherwise your calculated mean would always come out to be an integer 
    for (i = 0; i < ArrayLength; i++ )         //The variable i has scope within the loop only in your case. To use it outside the loop you should declare it outside and before the loop
    {
         Sum = Sum + Array[i];
    }

    Mean = Sum /i;                        //Logical error Mean=(sum of terms)/(Number of terms). You will get unexpected output from your logic.  

    return Mean;
}