有数据采集中,假设有N个长度的数组缓存,一次输入M个数据。N>3*M。数据计算不影响数据输入。试求每次的M个数据的平均值做为有效值打印输出
假设缓存数组为cache[N]
,每次输入的数据为input[M]
,则可以按照以下步骤计算每次的平均值:
input
数组中的数据加入缓存数组中,从cache[M]
开始覆盖之前的数据。average = (cache[N-M] + cache[N-M+1] + ... + cache[N-1]) / M
。以下是C++示例代码:
#include <iostream>
using namespace std;
const int N = 100; // 缓存数组长度
const int M = 10; // 每次输入的数据个数
int cache[N]; // 缓存数组
int main() {
int input[M]; // 输入数组
while (true) {
// 输入M个数据
for (int i = 0; i < M; i++) {
cin >> input[i];
}
// 将输入数据加入缓存数组
for (int i = 0; i < M; i++) {
cache[N-M+i] = input[i];
}
// 计算平均值并输出
double sum = 0;
for (int i = N-M; i < N; i++) {
sum += cache[i];
}
double average = sum / M;
cout << "Average: " << average << endl;
}
return 0;
}
注意,上述代码没有对输入数据进行合法性检查,实际应用中需要根据具体情况进行修改。