#include <stdio.h>
#include <math.h>
#define WINDOW_SIZE 5
#define THRESHOLD 0.5
enum TrendStatus { DOWNWARD, NO_TREND, UPWARD };
enum TrendStatus overallTrend = NO_TREND;
void MaWindow(double data, int windowSize)
{
static double window[WINDOW_SIZE];
static int index = 0;
static int count = 0;
double sum = 0.0;
double average = 0.0;
window[index] = data;
index = (index + 1) % windowSize;
if (count < windowSize)
{
count++;
}
if (count == windowSize)
{
for (int i = 0; i < windowSize; i++)
{
sum += window[i];
}
average = sum / windowSize;
double diff = fabs(data - average);
if (diff > THRESHOLD)
{
if (data > average)
{
overallTrend = UPWARD;
}
else
{
overallTrend = DOWNWARD;
}
}
else
{
overallTrend = NO_TREND;
}
}
}
int main()
{
double data[] = {1.2, 3.0, 2.5, 4.0, 5.5, 6.7, 7.8, 8.9, 9.0, 10.1, 11.2};
int size = sizeof(data) / sizeof(data[0]);
int windowSize = WINDOW_SIZE;
for (int i = 0; i < size; i++)
{
MaWindow(data[i], windowSize);
}
switch (overallTrend)
{
case UPWARD:
printf("整体趋势状态:上升\n");
break;
case DOWNWARD:
printf("整体趋势状态:下降\n");
break;
case NO_TREND:
printf("整体趋势状态:无趋势\n");
break;
}
return 0;
}