【发布时间】:2013-11-14 23:10:37
【问题描述】:
我需要编写一个程序,传递一个 int 数组及其大小,然后打印出高于平均水平的数字。谁能帮我解决这个问题?我坐在这里想知道它到底在问什么,而且我对编程还是很陌生,所以我不知道该怎么做。对不起,我听起来很无能为力,但我只是感到困惑。感谢任何可以提供帮助的人。到目前为止,这就是我所拥有的:
这是更新后的代码,但我仍然无法弄清楚为什么没有显示多个平均值,或者如何使输出值正确。
编辑:将 average() 函数中的几个 int 值更改为浮点数,但最后的总值仍然存在问题
#include <iostream>
using namespace std;
int average(int values[],int size);
int main(){
int size;
int values[] = {1,2,3,4,5,6};
cout << "Please input the size of the array" << endl;
cin >> size;
int output = average(values, size);
if(values[size]>output){
cout << "The values above average are: " << output << endl;
}
return 0;
}
int average(int values[],int size){
float temp=0.0;
for(int i=0;i<size;i++){
temp += values[i];
}
float end=temp/size;
return end;
}
【问题讨论】:
-
去图书馆,花几个小时读几本书,然后回到你的电脑前。您可能需要读取(或初始化)您的数组,并且您可能会考虑使用一些 std::vector<int>。
-
编程的第一步是了解你需要做什么。你能用语言(对自己)描述任务想要什么吗?如果你做得好,你就会知道你需要查看多少次数组,以及如何做的大致思路。然后剩下的就是学习代码了。这实际上是最简单的部分。
-
这是您的
average方法的可能签名。template<size_t N> int average(const int (&arr)[N])从那里拿走。 -
您将平均值计算为
float值,这是正确的做法。但是,您的average函数返回一个int,将结果截断为负无穷大。直到您将输出谓词从>更改为>=,最终打印出一些 低于 平均值的值(在您的示例中为3),这一点才会变得明显。
标签: c++ arrays function numbers average