others - 数组 - 比平均数高出的数字[C ]

我用30个随机数填充了一个数组,并且计算了平均值,我想显示多少个数字比平均值高,我试图做一个函数"aboveaverage",检查数字是否高于平均值,而且只是增加计数"num_over_average ",问题是我不知道如何将值"avg "从函数传递给另一个函数。


#include <iostream>


#include <ctime>


using namespace std;



const int n = 30;



void fillArray(int age[], int n) {


 srand(time(NULL));


 for (int index = 0; index < n; index++) {


 age[index] = (rand() % 81) + 8; 


 }


}



void printArray(int age[], int n) {


 for (int index = 0; index < n; index++) {


 cout << age[index] << endl;


 }


}



double printAverage(int age[], int n) {


 double sum;


 double avg = 0.0;


 for (int i = 0; i < n; i++) {


 sum = sum + age[i];


 }


 avg = ((double) sum) / n;


 cout << avg << endl;


 return avg;


}



void aboveAverage(int age[], int n) {


 double avg;


 int num_over_average = 0;


 for(int i = 0; i < n; i++){


 if(age[i] > avg) {


 num_over_average++;


 }


 }


 cout<<num_over_average;


}




int main(int argc, char *argv[]) {


 int age[n];



 fillArray(age, n);


 cout <<"array:" << endl;


 printArray(age, n);


 cout << endl;



 aboveAverage(age, n);



 //example: Days above average: 16


}



时间:

你有两个使用代码的解决方案:

你可以调用printAverage()来初始化aboveAverage()中的avg


void aboveAverage(int age[], int n) {


 double avg = printAverage();


 ...


}



或者,通过使用printAverage()计算aboveAverage()参数后,传递平均值:


void aboveAverage(int age[], int n, double avg) {


 ...


}



  • aboveAverage更改为 void aboveAverage(int age[], int n, double avg)
  • printAverage函数返回avg
  • main代码的最后一部分更改为

    
    double avg;
    
    
    avg = printAverage(age, n);
    
    
    aboveAverage(age, n, avg);
    
    
    
    

希望有帮助!

如果使用标准库,则可以使用两行代码执行这个操作:


double average = std::accumulate(std::begin(age), std::end(age), 0.0) / std::size(age);


int above_average = std::count_if(std::begin(age), std::end(age),


 [average](double value) { return average < value; });



这种方法的一个主要优点是,你可以更改容器类型,比如,vector<double>,而不必更改这个代码。

如果创建全局static变量,每个函数都可以访问它:

在main或其他函数外面


static int counter = 0;



你也可以通过引用传递,然后每次更改都将对原始变量进行更改:


myfunction(&count);//calling the function



void myfunction(int *counter){


} 



...