我需要编写一个传递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;
}
答案 0 :(得分:0)
你应该创建一个intigers数组并将它传递给普通函数,并且需要传递大小(这样你就知道要循环多少次)。在Average函数的循环中,将所有值添加到临时值,然后除以输入到函数的计数。
//returns the average
int average(int Values[],int Size){
//perhaps declare a temporary value here
for(int i=0;i<Size;i++){
//add all the values up and store in a temporary value
}
//here divide by Size and return that as the average
}
此
if(values[size]>output){
cout << "The values above average are: " << output << endl;
}
应该替换为:
for(int i=0;i<size;i++){
if(values[i]>output){
cout << "The values above average are: " << values[i] << endl;
}
}
答案 1 :(得分:0)
这是一个比发布的解决方案更简单的解决方案。主要特点:它实际上做了它应该做的事情:
#include <iostream>
template<size_t N>
float average( const int (&value)[N] ) {
float total( 0.0f );
// Sum all values
for ( size_t index = 0; index < N; ++index )
total += value[index];
// And divide by the number of items
return ( total / N );
}
int main() {
int value[] = { 1, 2, 3, 4, 5, 6 };
// Calculate average value
float avg = average( value );
const size_t count = ( sizeof( value ) / sizeof( value[0] ) );
// Iterate over all values...
for ( size_t index = 0; index < count; ++index )
// ... and print those above average
if ( value[index] > avg )
std::cout << value[index] << std::endl;
return 0;
}
Ideone的实例。输出:
4
5
6