我已经查看了与此类似的其他主题,仍然无法找出我的代码有什么问题。以下是我程序中的一个函数,用于查找数组的平均值(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;
}
想法和解释会很可爱所以我能理解我到底做错了什么:/
答案 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;
}