C++ 数组';s在功能混淆C++;

C++ 数组';s在功能混淆C++;,c++,arrays,function,numbers,average,C++,Arrays,Function,Numbers,Average,我需要编写一个程序,传递一个int数组及其大小,然后打印出高于平均值的数字。有人能帮我澄清这个问题吗?我坐在这里想知道它到底在问什么,而我对编程还是很陌生,所以我不知道该怎么做。对不起,我听上去不太懂,但我只是糊涂了。谢谢任何能帮忙的人。到目前为止,我只有这些: 这是更新后的代码,但我仍然不明白为什么没有显示多个平均值,或者如何获得正确的输出值。 编辑:将average()函数中的两个int值更改为float,但最后的总值仍然存在问题 #include <iostream> usin

我需要编写一个程序,传递一个int数组及其大小,然后打印出高于平均值的数字。有人能帮我澄清这个问题吗?我坐在这里想知道它到底在问什么,而我对编程还是很陌生,所以我不知道该怎么做。对不起,我听上去不太懂,但我只是糊涂了。谢谢任何能帮忙的人。到目前为止,我只有这些:

这是更新后的代码,但我仍然不明白为什么没有显示多个平均值,或者如何获得正确的输出值。
编辑:将average()函数中的两个int值更改为float,但最后的总值仍然存在问题

#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;
int平均值(int值[],int大小);
int main(){
整数大小;
int值[]={1,2,3,4,5,6};
cout大小;
int输出=平均值(值、大小);
if(值[大小]>输出){

cout您应该创建一个初始化器数组并将其传递给average函数,并且需要传递大小(以便知道循环次数)。在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
}
//返回平均值
整数平均值(整数值[],整数大小){
//也许在这里声明一个临时值
for(int i=0;ioutput){

cout这里有一个比发布的解决方案更简单的解决方案。主要特点:它实际上做了它应该做的事情:

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

去图书馆,花几个小时读几本书,然后回到你的电脑上。你可能需要读(或初始化)你的数组,你可以考虑使用一些。编程的第一步是理解你需要做什么。你能用语言(对自己)描述吗?任务想要什么?如果你做得好,你会知道你需要看数组多少次,以及如何做的一般想法。然后剩下的只是学习代码。这实际上是简单的部分。下面是你的
average
方法的可能特征。
template int average(const int(&arr)[N])
从这里开始。您正在将平均值计算为
浮点值,这是正确的做法。但是,
average
函数返回一个
int
,将结果截断为负无穷大。只有将输出谓词从
更改为
>=
,最终打印一些低于平均值的值(示例中为
3
).对我来说,一切都非常清楚和简单。谢谢你,所以我做了这件事,我做了这件事,但它不是多重整数或任何平均数…它在上面更新了,如果有机会,你能看一下吗?谢谢你的回复,但对于我目前正在做的工作来说,它太复杂了。不过我很感激。XenoZergNid用简单的措辞和代码说得很对。@用户,一旦你发现你的平均值有时是错误的,你就会改变主意。
for(int i=0;i<size;i++){
    if(values[i]>output){
        cout << "The values above average are: " << values[i] << endl;
    }
}
#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;
}
4
5
6