Задача:
Каждый из элементов [latex]x_{i}[/latex]массива [latex]X(n)[/latex] заменить средним значением первых [latex]i[/latex] элементов этого массива.
Тесты
[latex]n[/latex] | Input | Output | Result |
2 | 11 7 | 11 9 | Пройден |
12 | 7 4 33 56 22 3 22 5 6 7 8 9 7 | 7 5.5 14.667 24.4 20.833 21 19 17.556 16.5 15.7273 15.1667 | Пройден |
1 | 136 | 136 | Пройден |
3 | -1 1 0 | 1 0 0 | Пройден |
Программный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#include <iostream> using namespace std; int main() { int n; cin >> n; //объявление VLA double X[n], sum = 0; for(int i = 0; i < n; i++){ cin >> X[i]; //заполнить массив sum += X[i]; //на лету подсчитывать сумму первых i элементов X[i] = sum / (i + 1); //и сразу же производить замену } for(auto x : X) cout << x << "\t"; //вывести массив на экран return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.util.*; import java.io.*; import java.math.*; class Ideone { public static void main(String args[]) { Scanner in = new Scanner(System.in); int n = in.nextInt(); double[] X = new double[n]; double sum = 0; for(int i = 0; i < n; i++){ X[i] = in.nextDouble(); sum += X[i]; //на лету подсчитывать сумму первых i элементов X[i] = sum/(i+1); //и сразу же производить замену } for(double x : X) System.out.print(x+"\t"); } } |
Задача достаточно простая, так что стадию анализа можно пропустить и перейти сразу к алгоритму решения.
Алгоритм решения
Заполнение массива происходит последовательно. Следовательно, замену можно производить на лету, сразу же после ввода каждого элемента, что и происходит в программе.
Детали реализации:
Для вывода массива на экран использован цикл в стиле С++11.
Реализация на Java: http://ideone.com/gMXpf6
Отлично. А мне сначала казалось, что понадобится второй массив.
Только второй вариант совсем не логичный. Так понимать условие задачи точно не стоит. Ведь тогда совсем не ясно когда остановить процесс изменения элементов и пересчёта среднего. Вдобавок результат будет зависеть от порядка пересчётов.
Нет, второй вариант точно не нужен.
Обновил отчет, оставил только первый вариант. К слову, вы задачу зачли, а к сумме баллов не прибавили.
Засчитана Java версия, 10 баллов.