数据采集中关于M值的问题

有数据采集中,假设有N个长度的数组缓存,一次输入M个数据。N>3*M。数据计算不影响数据输入。试求每次的M个数据的平均值做为有效值打印输出

假设缓存数组为cache[N],每次输入的数据为input[M],则可以按照以下步骤计算每次的平均值:

  1. input数组中的数据加入缓存数组中,从cache[M]开始覆盖之前的数据。
  2. 计算缓存数组中最后M个数据的平均值,即average = (cache[N-M] + cache[N-M+1] + ... + cache[N-1]) / M
  3. 将平均值打印输出。

以下是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;
}

注意,上述代码没有对输入数据进行合法性检查,实际应用中需要根据具体情况进行修改。