我用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
}
答案 0 :(得分:10)
这应该是一条评论,但我的代表次数不够:(
df = pd.DataFrame(data)
df = df.apply(lambda x:x.words_result['words'],axis=1).to_frame(name='words_result')
# df = df.pop('words_result').str.extract(r'(?P<office_name>[\x00-\x7F]+)?(?P<company_name>[\u4e00-\u9fff]+.*$)')
df[['office_name','company_name']] = df.pop('words_result').str.extract(r'([\x00-\x7F]+)?([\u4e00-\u9fff]+.*$)')
print(df)
office_name company_name
0 05B01 企商联登记注册代理事务所(通合伙)
1 Unit-D 608 华夏启商(企业管理有限公司)
2 NaN 中睿智诚商业管理有限公司
3 17/F(1706) 美泰德商务咨询有限公司
4 A2006~A2007 新曙光会计服务有限公司
5 2906-10 建筑与室内设计师网
6 NaN 中建瑞达
更改为aboveAverage
void aboveAverage(int age[], int n, double avg)
函数返回avg
将printAverage
代码的最后一部分更改为
main
希望这会有所帮助!
答案 1 :(得分:4)
您有两种使用代码的解决方案:
您可以调用printAverage()
在avg
中初始化aboveAverage()
:
void aboveAverage(int age[], int n) {
double avg = printAverage();
...
}
或者您用aboveAverage()
计算平均值后,在参数printAverage()
中传递平均值:
void aboveAverage(int age[], int n, double avg) {
...
}
答案 2 :(得分:2)
如果您使用标准库,则可以使用两行代码来做到这一点:
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>
,而无需更改任何代码。
答案 3 :(得分:-1)
如果创建全局静态变量,则每个函数都可以访问它:
主要功能或其他所有功能
static int counter = 0;
您也可以通过引用将其传递,然后对原始变量进行每次更改:
myfunction(&count);//calling the function
void myfunction(int *counter){
}