Сглаживание Графика Погоды

Problem #57

Tags: arithmetic loops floating-point c-0 simple digital-signal-processing

Who solved this?

Back to English version

сглаживание кусочно-линейного графика

Маленький Мерлин хочет стать метеорологом. Он измеряет температуру воздуха каждый час, так что через несколько дней получается длинная последовательность значений.

Однако инструменты его несовершенны и измерения не вполне точны - они "скачут" вверх и вниз на несколько градусов от реальных значений.

Обнаружив это, Мерлин решил "сгладить" данные. Чтобы достичь этого, каждое значение нужно заменить средним от трех - его самого и двух соседних (предыдущего и следующего). Например, если у нас последовательность из 5 значений:

3 5 6 4 5

То второе (5) должно быть заменено на (3 + 5 + 6) / 3 = 4.66666666667,
а третье (6) заменяется на (5 + 6 + 4) / 3 = 5,
четвертое же (4) заменим на (6 + 4 + 5) / 3 = 5.
Договоримся также что первое и последнее значения мы не меняем вовсе.

На картинке выше синяя линия изображает необработанные результаты измерений, а красная - данные после сглаживания.

От нас требуется написать программу которая поможет малышу Мерлину с его хитроумным алгоритмом цифровой обработки сигнала.

Входные данные указывают длину последовательности в первой строке.
Вторая строка содержит результаты измерений (значения последовательности).
Ответ должен содержать "сглаженную" последовательность. Значения нужно сосчитать с точностью 1e-7 или лучше.

Пример:

входные данные:
7
32.6 31.2 35.2 37.4 44.9 42.1 44.1

ответ:
32.6 33 34.6 39.1666666667 41.4666666667 43.7 44.1
You need to login to get test data and submit solution.