Ссылка на оригинальное решение
Задача:
Каждый из элементов $ x_i $ массива $ X\left(n\right) $ заменить средним значеним первых $ i $ элементов этого массива.
Тесты:
№ | $ n $ | Входные данные | Выходные данные |
1 | 12 | 7 4 33 56 22 3 22 5 6 7 8 9 | 7 5.5 14.666666666666666 25 24.4 20.833333333333332 21 19 17.555555555555557 16.5 15.727272727272727 15.166666666666666 |
2 | 1 | 136 | 136 |
3 | 3 | -1 1 0 | -1 0 0 |
4 | 10 | 1 1 1 1 1 1 1 1 1 1 | 1 1 1 1 1 1 1 1 1 1 |
Код программы:
1 2 3 4 5 6 7 8 9 10 11 12 |
class Test { static function main() { var n = 10; var a : Array<Float> = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]; var sum : Float = 0; for(i in 0...n) { sum += a[i]; a[i] = sum / (i + 1); } trace(a); } } |
Решение:
Сохраняем в переменной sum сумму первых $ i + 1 $ элементов массива. Тогда среднее значение для первых $ i + 1$ элементов можно вычислить как значение sum , деленное на количество просуммированных членов массива. Поскольку значение элемента массива под номером $ i $ для дальнейших вычислений не понадобится, можно сразу его перезаписать.
Лена Наумова недавно публиковал (посмотреть все)