Автор: Булавка 5.06.2006 2:24
программа считает все когда имеет вид :
Код
Program mass; uses crt; const n=30; var i,p,k,S,C:integer; Sa,Sg:real; A:array[1..n] of integer; BEGIN writeln ('введите массив А через пробел'); for i:=1 to n do read (A[i]); p:=0; S:=0; for i:=1 to n do if A[i]<0 then begin S:=S_A[i]; p:=p+1; Sa:=S/p; end; k:=0; C:=1; for i:=1 to n do if A[i]>0 then begin C:=C*A[i]; k:=k+1; end; Sg:=exp(ln(C)/k); for i:=1 to n do if A[i]<=-5 then A[i]:=abs(A[i]); for i:=1 to n do write (A[i]:3); writeln; writeln ('среднее арифметическое отрицательных элементов Sa=', Sa:4); writeln ('среднее геометрическое положительных элементов Sg=',Sg:4); repeat until keypressed END.
преподаватель сказал что в куске
k:=0; C:=1;
for i:=1 to n do
if A[i]>0 then
begin
C:=C*A[i];
k:=k+1;
end;
Sg:=exp(ln©/k);
Sg надо перед эндом впихнуть. но так ничего не работает. может вы подскажите как записать чтобы все по правилам?
Автор: volvo 5.06.2006 2:31
Цитата
Sg надо перед эндом впихнуть.
Бред... Все правильно у тебя считается... Для подсчета среднего геометрического как раз и надо в цикле перемножить все элементы, и ПОСЛЕ цикла вычислить корень нужной степени...
А вот Sa напрасно внутри цикла изменяется ... По правилам его бы надо вынести:
for i:=1 to n do if A[i]<0 then begin S:=S+A[i]; p:=p+1; end; Sa:=S/p;
Автор: Булавка 5.06.2006 2:44
спасибо большое! очень признательна