【发布时间】:2021-08-11 11:14:49
【问题描述】:
我编写了这段代码来计算 c 中数组的移动平均值。
Array_MovingAverage(const int inputSeries[],
size_t inputSize,
size_t window,
float output[],
size_t outputSize) {
if (inputSeries && output != NULL){
for(size_t i = 0; i < window ; i++)
if (window < inputSize)
if (inputSeries != NULL && output != NULL) {
if(outputSize >= inputSize) {
size_t inputSize[11] = {1, 2, 2, 3, 6, 8, 9, 2, 1, 2, 1};
const uint8_t window = 5;
{
const int inputSeries[] = {1, 2, 2, 3, 6, 8, 9, 2, 1, 2,1};
double window = 5;
double c = 2.0;
double d = 2.0;
for(int i = 0; i < window; i++)
{
c += inputSeries[i];
d = c / window;
}
return true;
}
}
}
}
}
我一直在尝试计算 C 中数组的移动平均值并获得所需的输出,但它似乎不起作用。您能否给我一个建议,如何计算 C 中静态数组的移动平均值?
输出应该是:
Moving Average: 1 2 2 3 6 8 9 2 1 2 1
0 0 0 0 3 4 6 6 5 4 3
【问题讨论】:
-
你为那个函数提供了什么数据,你怎么称呼它。你得到什么输出而不是你显示的预期输出?
-
为什么要用局部变量覆盖参数?为什么你要在一个循环中进行所有这些
if检查?进入函数时执行一次。您还使用 2 个嵌套的for循环,都使用i作为计数器,并且都从0 .. window计数。 -
if (inputSeries && output != NULL)太棒了!它技术上是正确的,但是误导性太强了!我喜欢它! -
如果你不打印任何东西,你为什么期望任何输出?您也没有为
output分配任何东西。此外,外循环完全没用,因为您在内循环之后立即返回。你应该在调试器中运行它,看看你的程序流在哪里。 -
你只显示了预期的输出;实际输出是多少?为什么你认为前四个值应该为零?您似乎正在修改一些损坏的代码来做一些它不打算做的事情。无论如何,您开始使用的代码似乎都不正确。
标签: arrays c output moving-average