Другие языки программирования и технологии

среднее геометрическое в pascal

по какой формуле нужно находить среднее геометрическое

Элементы массива, меньшие 15, и их среднее геометрическое.
Среднее геометрическое n элементов массива — это корень n степени из произведения всех элементов.
Igor Kariy
Igor Kariy
75 864
Лучший ответ
Корень n-ной степени из произведения элементов ⁿ√(a1•...•an) - это правильно! Но на практике, когда, например, встречаются отрицательные множители, лучше перемножать модули этих элементов и внимательно следить за знаком получающегося произведения. Да и потом, когда произведение уже найдено, вычисление среднего может быть не таким уж и тривиальным. Примеры: -1 и 2 или, скажем, -5 и -5. Что тут среднее? √-2? 5 или -5 ?

В случае только положительных элементов есть другая опасность- их может быть много. Пусть они все в диапазоне [10..15], числа, вроде, небольшие, но если их в массиве тысячи (а то и миллионы!), а числа в машинном представлении ограничены, то рано или поздно просто наступит переполнение. Избежать этого можно логарифмированием. Сначала ищем lnⁿ√(a1•...an)=(ln a1 +..+ln an)/n, а потом экспоненту полученного логарифма.
Роман Ситюк
Роман Ситюк
28 648
Суммируешь и делишь на количество элементов.
Задание:
Найти среднее геометрическое отлицательных нечетных элементов массива.

Вообщем нужно исправить эту программу, чтобы работала по заданию и правильно считала.
Среднее геометрическое: всё умноженное, а потом корень n-ной степени

Вот что-то написал, но уверен, что недописал и формула возможно не правильная, т. к. пересчитывал и не получил нужный результат.

PascalВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
uses wincrt;
var
a:array[1..100] of integer;
i,kol,n:integer;
otv:real;
begin
write('Ââåäèòå êîà «ГЁГ·ГҐГ±ГІГўГ® ГЅГ «ГҐГ¬ГҐГ*òîâ: ');
readln(n);
writeln('ГЊГ*Г±Г±ГЁГў');
randomize;
for i:=1 to n do
begin
a[i]:=random(9);
write(a[i]:3);
end;
otv:=exp(1/n*ln(a[i]));
writeln;
writeln('OTVET: ',otv:5:3);
end.