【发布时间】:2015-02-17 19:39:16
【问题描述】:
这个任务的目的是求一个数组的平均值,但不在主数组内,我必须调用一个函数来求和并显示平均值。
虽然我的代码是正确的,但它只是返回“平均值为 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,但我认为我会将它们全部更改为浮点数,这样它们就不会发生冲突。比如将 int 转换为 float 等。
正如我所说,我对此很陌生,所以我的逻辑并不真正存在,但我认为我在正确的轨道上。
知道为什么它返回 011014F1 和类似的数字,而不仅仅是 1-10 的平均值吗?
非常感谢任何提示!
【问题讨论】:
-
你打印的是
average函数的地址。您必须使用参数调用它才能使其工作(否则它怎么知道它打算使用什么数组?) -
有一个错字。在
cout中你想要average(array, 10)否则,正如你所发现的,它会打印函数指针。 -
@user3528438:
std::valarray是整个 C++ 标准库中最糟糕的东西,就在std::vector<bool>旁边。我从来没有在任何地方看到过推荐(或使用过)它,而且它在标准库中的事实更像是一个历史事故。参见例如Josuttis 的“C++ 标准库”一书了解详细信息。 -
你应该学习一门不同的 C++ 课程,在数组之前教授
std::vector。在函数之间传递时,数组的工作量更大。 -
@ChristianHackl 如果你非常喜欢手写平均/最小值/最大值函数