A272. Количество осадков

Задача

Даны действительные числа [latex]a_{1}, a_{2}, …, a_{n}[/latex] – количество осадков (в миллиметрах), выпавших в Москве в течение [latex]n[/latex] лет. Вычислить среднее количество осадков [latex]average[/latex] и отклонение от среднего для каждого года [latex]d_{1}, d_{2}, …, d_{n}[/latex].

Входные данные: 

Последовательность действительных чисел.

Выходные данные:

Среднее количество осадков [latex]average[/latex].
Последовательность действительных чисел [latex]d_{1}, d_{2}, …, d_{n}[/latex] — отклонение от среднего.

Тесты

 №  Входные данные  Выходные данные
 1  0 0 0 0 0 0 1 0 0 0  0.1
0.1 0.1 0.1 0.1 0.1 0.1 0.9 0.1 0.1 0.1
 2  1.23 2.34 3.45 4.56 5.67  3.45
2.22 1.11 0 1.11 2.22
 3  234.109 4655.15 43.629 14.109  1236.75
1002.64 3418.4 1193.12 1222.64
 4  5 5 5 5 5 5  5
0 0 0 0 0 0

Код программы

Решение

В цикле считываем числа из входного потока и прибавляем их к переменной [latex]average[/latex] (изначально [latex]average=0[/latex]), а также помещаем их в вектор [latex]v[/latex]. Далее делим [latex]average[/latex] на количество элементов в векторе, таким образом получим среднее количество осадков. Затем при помощи цикла поочередно будем выводить отклонение от среднего количества осадков для каждого года. Отклонением от среднего будет абсолютная величина разности соответствующего элемента вектора [latex]v[/latex] и среднего значения [latex]average[/latex].

Ссылки

A274. Среднее арифметическое всех членов последовательности, кроме одного

Задача из сборника задач по программированию Абрамова С.А. 2000г.
Даны действительные числа [latex]a_{ 1 }[/latex],…,[latex]a_{ 20 }[/latex]. Получить числа [latex]b_{ 1 }[/latex],…,[latex]b_{ 20 }[/latex], где [latex]b_{ i }[/latex] – среднее арифметическое всех членов последовательности [latex]a_{ 1 }[/latex],…,[latex]a_{ 20 }[/latex], кроме [latex]a_{ i }[/latex] ([latex]i[/latex] = 1,2,…,20).

Обобщим задачу для последовательности длины [latex]n[/latex]
Даны действительные числа [latex]a_{ 1 }[/latex],…,[latex]a_{ n }[/latex]. Получить числа [latex]b_{ 1 }[/latex],…,[latex]b_{ n }[/latex], где [latex]b_{ i }[/latex] – среднее арифметическое всех членов последовательности [latex]a_{ 1 }[/latex],…,[latex]a_{ n }[/latex], кроме [latex]a_{ i }[/latex] ([latex]i[/latex] = 1,2,…,[latex]n[/latex]).

Входные данные:
Последовательность действительных чисел.

Выходные данные:
[latex]n[/latex] чисел, [latex]i[/latex]-ое из которых является средним арифметическим всех членов последовательности, кроме [latex]i[/latex]-го ([latex]i[/latex] = 1,2,…,[latex]n[/latex]).

Тесты

Входные данные Выходные данные
1 4 The sequence must consist of at least two elements.
2 1 0 1 The arithmetic average of all elements of this series except the element №i is:
for i = 1: 0.5
for i = 2: 1
for i = 3: 0.5
3 10.1 2.4 11.3 0.8 The arithmetic average of all elements of this series except the element №i is:
for i = 1: 4.8(3)
for i = 2: 7.4
for i = 3: 4.4(3)
for i = 4: 7.9(3)
4 2.5 -1.5 4 -9 1.22 The arithmetic average of all elements of this series except the element №i is:
for i = 1: -1.32
for i = 2: -0.32
for i = 3: -1.695
for i = 4: 1.555
for i = 5: -1

Код на C++

Код на Java

Решение
Для начала, в первом цикле мы читаем числа из входного потока, помещаем их в вектор a и прибавляем к переменной sum, предназначенной для хранения суммы всех чисел последовательности. Последовательность должна состоять как минимум из двух элементов. Чтобы получить среднее арифметическое всех её членов, кроме [latex]i[/latex]-го, достаточно отнять [latex]i[/latex]-й элемент вектора a от значения переменной sum и разделить результат на количество членов такой неполной последовательности, а оно будет на единицу меньше размера вектора a. Таким образом заполняется вектор b, в котором хранятся элементы последовательности [latex]b_{ 1 }[/latex],…,[latex]b_{ n }[/latex], после чего требуемая последовательность выводится.

Код на ideone.com (C++)
Код на ideone.com (Java)
Условие задачи (с.118)

A295

Задача. Даны целые числа [latex]a_{1},\ldots, a_{n}[/latex]. Наименьший член последовательности [latex]a_{1}, \ldots, a_{n}[/latex] заменить целой частью среднего арифметического всех членов, остальные члены оставить без изменения. Если в последовательности несколько членов со значением min [latex](a_{1}, \ldots, a_{n})[/latex], то заменить последний по порядку.

Тесты

Test Input Output
1 2 4 8 16 2 4 2 4 8 16 6 4
2 1 1 1 1 1 1 1 1
3 -5 5 -10 10 -10 5 5 -5 5 -10 10 0 5 5
4 2 6 9 -4 -5 7 13 2 6 9 -4 4 7 13
5 0 0 0 0 0 1 0 0 0 0 0 1
6 0 1 0 0 2 0 25 0 1 0 0 2 4 25

Код программы

 

Алгоритм

Мы считываем все числа до конца входного потока и добавляем их в вектор. В полученной последовательности мы находим минимальный элемент, а также сумму всех членов. Затем мы вычисляем их среднее арифметическое, и извлекаем целую часть. Полученное число мы помещаем в вектор на место последнего минимального элемента, после чего выводим результат.

Код программы

ML4

Алина Гончарова
Алина Гончарова

Latest posts by Алина Гончарова (see all)

Задача:
Даны два действительных положительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.

Решение:

Так как нам в задаче не указано какими будут числа по длинне, мы используем тип данных long double, который поможет охватить весь их диапозон.

Для того, чтобы найти среднее арифметическое чисел нам нужно воспользоваться формулой [latex]A=\frac{x_1+x_2+ \ldots +x_n}{n}[/latex] , но так как у нас задано всего два числа, будем пользоваться этой формулой: [latex]A=\frac{a+b}{2}[/latex]

Среднее геометрическое вычисляется по формуле :[latex]G=\sqrt[n]{x_1+x_2+ \ldots +x_n}[/latex] , но нам понадобиться формула только для двух чисел: [latex]G=\sqrt{a\cdot b }[/latex]

Тесты:

 

Входные данные Выходные данные
1. -1 -3 -2

1.73205

2. 5 6 5.5

5,47723

3.  4 6  5

4.89898

4.  100 2.6  51.3

16.1245

Код: 

 

Задача взята отсюда.

Код программы.

ML5

Задача. Даны два действительных числа. Найти среднее арифметическое этих чисел и среднее геометрическое их модулей.

Тесты

Первое число Второе число Среднее арифметическое Среднее геометрическое
156 82 119 113.102
-1158 2569 705.5 1724.79
256.3 289.5 272.9 272.395
9854.08 -493 4680.54 2204.1
-544.59 -12 -278.295 80.8398

Алгоритм решения

  1.  Так как в постановке задачи не указан диапазон чисел, то рациональнее всего использовать  тип данных long double, охватывающий наибольшее количество возможных вариантов входных данных.
  2. Нам необходимо найти среднее арифметическое чисел, которое  представляет собой  сумму всех зафиксированных значений, делённую на их количество. Для нашей задачи формула приобретает следующий вид:  [latex]A=\frac{a+b}{2}[/latex].
  3.  Для нахождения среднего геометрического модулей двух чисел воспользуемся формулой  [latex] G=\sqrt{\left|x_1\times x_2 \right|} [/latex].

Здесь находится код в ideone.com

Код программы:

Ю4.4

Швандт Максим Альбертович
Швандт Максим Альбертович

Latest posts by Швандт Максим Альбертович (see all)

Задача: Вычислить среднее значение [latex]x[/latex] и дисперсию [latex]d_{x}[/latex] для заданного массива [latex]X(k)[/latex] наблюдений:

[latex]x_{avg}=\frac{1}{k}\sum_{i=1}^{k}{x_{i}}[/latex];   [latex]d_{x}=\frac{1}{k-1}\sum_{i=1}^{k}{\left(x_{i}-x_{avg^{}} \right)^{2}}[/latex]

Тесты:

 k x среднее дисперсия
 3  4, 5, 8 5,66666666666667  4,333333
 5  2, 3, 6, 13, 22 9,2  69,7
 6  0, 5, 23, 7, 11, 1 7,83333333333333  71,366667
2  error: incomplete input x
 0  error: wrong value k
 —  error: incomplete input k
1 5 5  error: wrong value k

Код программы:

Код на языке Java:

Ссылка: https://ideone.com/648LHr

План программы:

  1. Назначение рабочих переменных
  2. Проверка ввода числа итераций
  3. Вычисление среднего значения
  4. Вычисление дисперсии
  5. Вывод результата

Программа высчитывает среднее значение и дисперсию для заданного массива действительных чисел. Она состоит из двух циклов — в первом вычисляется среднее значение, а во втором цикле вычисляется дисперсия используя результаты предыдущего цикла — заполненный массив и среднее значение.

Ссылка на ideone.com: http://ideone.com/t9ALrA