这个任务的目的是找到一个数组的平均值但不在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的平均值?
任何提示都非常感谢!
答案 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