【发布时间】:2019-05-13 08:31:55
【问题描述】:
我用 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使用它。 -
printAverage 返回平均值,只需将该值赋予 aboveAverage 添加该参数
-
printAverage应该返回一个double -
您应该将 int printAverage 更改为 double printAverage。函数返回的类型是 double 而不是 int。
-
double avg;-- 在aboveAverage函数中未初始化。
标签: c++ arrays numbers average