C++ 如何计算c+中每n个元素的平均值+;

C++ 如何计算c+中每n个元素的平均值+;,c++,vector,C++,Vector,我编程是为了好玩,我想取每N个元素的平均值。例如,我在向量中有1000个元素,我想取每100个元素的平均值,我如何使用C++来实现。p> 我试着用模,但我的逻辑不对 float av; vector<float> average; vector<int> vec = {1, 3, 5, 5, 6, 2, 12, 54}; for(int i = 0; i < vec.size(); i++) { if(i % 2

我编程是为了好玩,我想取每N个元素的平均值。例如,我在向量中有1000个元素,我想取每100个元素的平均值,我如何使用C++来实现。p> 我试着用模,但我的逻辑不对

    float av;
    vector<float> average;
    vector<int> vec = {1, 3, 5, 5, 6, 2, 12, 54};

    for(int i = 0; i < vec.size(); i++) {

        if(i % 2 == 0) {
            av += vec[i];
            average.push_back(av);
        }

        cout << average << endl;
    }
float-av;
向量平均;
向量vec={1,3,5,5,6,2,12,54};
对于(int i=0;i在循环中,您可以将
i++
更改为
i+=100
,然后保留遇到的每个元素的运行总和以及已求和元素数的计数,然后返回总和除以计数得到平均值。

好问题。这是我提出的一个简单解决方案。我使用
周期性
表示要使用的向量元素之间的步长。然后,由于元素的数量可能不是周期性的整数倍,我使用上限函数获取一个以上的元素进行除法

#include <iostream>
#include <vector>
#include <cmath>

int main()
{
  int total = 0;
  uint count;
  float average;
  const uint periodicity = 2;
  std::vector<int> vec {1, 3, 5, 5, 6, 2, 12, 54, 18};

  for (int i = 0; i < vec.size(); i = i + periodicity) {
    total += vec[i];

  }

  count = ceil((double) vec.size()/periodicity);
  average = (double) total / count;
  std::cout << "sum: " << total << ", count: " << count
  << ", average: " << average << std::endl;

}
#包括
#包括
#包括
int main()
{
int-total=0;
单位计数;
浮动平均;
常数周期性=2;
向量向量{1,3,5,5,6,2,12,54,18};
对于(int i=0;i(元素的总和/数量):
(向量[0]+向量[1]+…+向量[N-1])/N

第n个元素只进行除法,每个数字的和为:

int N = 2;
for (int i = 0; i < vec.size(); i++)
{
  av += vec[i];

  if (i % N == 0)
  {        
    average.push_back(av / N);
    av = 0; // reset sum for next average
  }
}
int N=2;
对于(int i=0;i如果你在用一种算法来挣扎,那么试着用钢笔写在纸上,而不是C++。试着用它来完成它,当你得到它的时候,用代码写它。为什么你使用了模?你在代码中的平均值在哪里?为什么<代码>平均< /代码>向量,它不应该是一个数字吗?问题是M。如果将预期结果与向量相加,则更为清晰。应为16(3、5、2、54的平均值)或向量{2、5、4、33}?(每对元素的平均值)?