使用函数查找数组C ++的平均值

时间:2015-02-17 19:39:16

标签: c++ arrays function

这个任务的目的是找到一个数组的平均值但不在main之内,我必须调用一个函数来做和,并显示平均值。

我虽然我的代码是合理的,但它只是返回"平均值是011014F1"

我尝试了几种不同的方法来完成这项功能,但我在某个地方出错了,可能无处不在!

只是一个抬头,我刚开始编程。

继承我的代码:

#include <iostream>
#include <vector>

using namespace std;


void printArray(int theArray[], int sizeOfarray);
float average(float numbers[], float size, float arrayAverage);

int main()
{

   int array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

   printArray(array, 10);

   cout << "The average is: " << average << endl;

   return 0;
}

void printArray(int theArray[], int sizeOfarray)
{
   for (int x = 0; x < sizeOfarray; x++)
  {
    cout << theArray[x] << endl;

  }
}

float average(float numbers[], float size, float arrayAverage)
{
        double sum = 0.0;
        for (int x = 0; x < size; x++)
    {
        sum += numbers[x];
        arrayAverage = sum / size;
    }
        return (arrayAverage);
}

我将浮点平均函数初始设置为带有int的浮点数,用于&#39;数字&#39;&#39; size&#39;和&#39; arrayAverage&#39;但我想我会把它们全部改成漂浮所以它们不会发生冲突。比如将int转换为float等。

正如我刚才所说,所以我的逻辑并不存在,但我认为我是正确的轨道。

任何想法为什么它返回011014F1和那样的数字而不仅仅是1-10的平均值?

任何提示都非常感谢!

5 个答案:

答案 0 :(得分:4)

average是一个函数,您需要调用,并打印它返回的内容。您现在打印的是该功能的地址

答案 1 :(得分:2)

这里有很多问题。第一:

cout << "The average is: " << average << endl;

这只是打印出average函数的地址,而不是调用它。你想做的是:

cout << "The average is: " << average(array, 10, 0) << endl;

其次,您的方法签名具有各种类型的不匹配。预期的数组值类型为float,但您将int数组传递给它。这不会起作用,因为编译器不允许从int[]float[]的隐式转换。您的size参数也应该是方法签名中的int,而不是float,因为数组大小始终是整数。

第三,arrayAverage参数似乎没有任何目的,除非可能会丢掉你的数学。你将它用作运行累加器,这很好,但是没有理由将它传递给函数,它可能只是一个本地值。因此,您的方法签名应如下所示:

float average(float numbers[], int size);

最后,用于计算数组平均值的数学运算是错误的。你这样做:

for (int x = 0; x < size; x++)
{
    sum += numbers[x];
    arrayAverage = sum / size;
}

特别是arrayAverage = sum / size是错误的。或者更确切地说,仅在最后的循环迭代期间才是正确的。这意味着这只是浪费数学。它应该是:

float average(float numbers[], int size) {
    double sum = 0;
    for (int x = 0; x < size; x++)
    {
        sum += numbers[x];
    }
    return sum /(double)size;
}

答案 2 :(得分:0)

你没有将任何东西传递给你的函数平均值,浮动平均值(浮点数[],浮点数大小,浮点数ArrayAverage)你应该将数组作为第一个参数传递,并将数组的大小传递给第二个,第三个是你不需要它,我建议你删除它你的功能将是:

float average(float numbers[], float size)
{
float average;
        double sum = 0.0;
        for (int x = 0; x < size; x++)
    {
        sum += numbers[x];
        arrayAverage = sum / size;
    }
        return (average);
}

在你的主要你做一个浮动averageResult = average(数组,大小); qDebug()“averageResult;

答案 3 :(得分:-1)

#include <iostream>
#include <vector>

using namespace std;

void printArray(int theArray[], int sizeOfarray);

int main()
{
   int array[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
   printArray(array, 10);
   return 0;
}

void printArray(int theArray[], int sizeOfarray)
{
   for (int x = 0; x < len(theArray); x++)
  {
    average = average + theArray[x]
  }
  average = average/(len(theArray));
  cout << average;
}

答案 4 :(得分:-1)

1:在你的函数“float average(float numbers [],float size,float arrayAverage)中”你不需要将arrayAverage作为一个边界,它应该在函数范围内初始化, 2:如果你是初学者,那么你以后会学习指针,你将会知道函数实际上是地址! 3:使用该行(cout&lt;&lt;“平均值:”&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; endl;),记住在函数范围内初始化float arrayAverage