Показать сообщение отдельно
Старый 16.06.2010, 17:16   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Поправляю. Во-первых, массив должен быть вещественным, а не целочисленным, а во-вторых, требуется найти среднее геометрическое n элементов, а оно отнюдь не есть квадратный корень из суммы, как у Вас, а корень n-ой степени из произведения этих элементов. Вот что получилось у меня:
Код:
Const
 N=20;
VAR
 Nactual:BYTE;
 A:ARRAY[1..N] of REAL;
 Product:Extended;
 i:INTEGER;
BEGIN
 RANDOMIZE;
 WriteLn('Initial array:');
 For i:=1 to N do
  begin
   A[i]:=100.0*(RANDOM-0.5);
   Write(A[i]:7:2);
  end;
 WriteLn;
 Product:=1.0;
 Nactual:=0;
 For i:=1 to N do
  If A[i]>0 then
   begin
    INC(Nactual);
    Product:=Product*A[i];
   end;
 Writeln('The geometric mean of positive components is ', Exp((1.0/Nactual)*Ln(Product)):6:3);
 ReadLn;
END.
P.S. А вот интересно, что будет, если преподаватель тоже знает о нашем форуме и заглядывает сюда?
Vladimir_S вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070