计算数组的平均值

时间:2014-04-03 02:41:19

标签: c++ arrays function mean

你好我在计算函数的平均值时遇到了问题,程序编译然而我没有得到64.2的预期答案打印出来而是得到一组随机的整数和字符。

这不是整个代码,只是适当的变量和函数。

        // main function and prototyping would be here
 int size=0;
 float values[]={10.1, 9.2, 7.9, 9.2, 13.0, 12.7, 11.3};


    float mean(float values[], int size)
   {
      float sum = 0;
      float mean = 0;

            for (size = 0; size > 7; size++)
                  {
                    sum += values[size];
                    mean = sum / 7;
                  }

return mean;
    }

3 个答案:

答案 0 :(得分:1)

改变你的循环:

for (size = 0; size < 7; size++)
{
    sum += values[size];
}
mean = sum / 7;
  1. for循环的终止条件不对。
  2. mean移出for循环。

答案 1 :(得分:1)

 for (size = 0; size > 7; size++)

由于size被初始化为0,并且它增加1,所以它在第一次迭代结束时变为1并且未通过测试(它不是> 7)。因此,它会立即退出循环。

其次,在循环完成后计算循环时,计算循环内的平均值。从理论上讲,你应该得到一个正确的值,因为你将它重做为循环中该点的总和的平均值,但这是浪费时间。您还可以通过重新定义来消除尺寸。

float mean(float values[], int size)
{
  float sum = 0;
  float mymean = 0;

  for (int i = 0; i < size; i++)
    {
       sum += values[i];
    }
  mymean = sum / size;

  return mymean;
}

答案 2 :(得分:0)

为什么测试size > 7在那里?期望您的初始值具有异常大的零值?你可能意味着size < 7,尽管使用像这样的任意幻数是麻烦。

你可能想要的是:

float mean(float* values, int size)
{
  float sum = 0;
  for (int i = 0; i < size; ++i)
     sum += values[i];

  return sum / size;
}

要成为更多C ++,您需要签名:

float mean(const float* values, const size_t size)

这样你就可以通过修改这些值来解决任何错误。