C++ 如何计算c+中每n个元素的平均值+;
我编程是为了好玩,我想取每N个元素的平均值。例如,我在向量中有1000个元素,我想取每100个元素的平均值,我如何使用C++来实现。p> 我试着用模,但我的逻辑不对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
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}?(每对元素的平均值)?