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

Using a function to find the average of an array C++

本文关键字:C++ 平均值 数组 查找 函数      更新时间:2023-10-16

这个任务的目的是找到数组的平均值,但不是在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);
}

我最初将float average函数设置为一个float,其中int表示"numbers"、"size"answers"arrayAverage",但我认为我会将它们全部更改为float,这样它们就不会冲突。如将int转换为float等。

正如我所说,我是新手,所以我的逻辑并不完全正确,但我认为我走的是正确的道路。

你知道为什么它会返回011014F1和这样的数字,而不是1-10的平均值吗?

非常感谢任何提示!

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

这里有很多问题。第一:

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

您没有将任何东西传递给您的函数average,float average(float numbers[],float size,float 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);
}

在你的main中,你做了一个float averageResult=average(数组,大小);qDebug()《平均结果;

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