задан массив из 40 случайных элементов, переписать из массива в линейный двунаправленный список чётные элементы массива, добавить в начало списка среднее арифметическое элементов списка и в конец добавить среднее геометрическое элементов списка.
В принципе решить я ее смог...
Program list;
uses crt;
type
TPList= ^TList;
TList= record
Data: real;
Next: TPList;
Prev: TPList;
end;
const
n=40; {эт так, чтоб проверять легче было ))}
var
Head, Curr, PrevEl: TPList;
i, kol: byte;
SrAr, SrGeom, sum, prod: real;
ElArr: array [1..n] of real;
procedure Add_el; {добавляет очередную запись в список}
begin
if i=2 then
begin
new(Head);
Head^.Data:= ElArr[i];
PrevEl:=Head;
end
else
begin
new(Curr);
Curr^.Data:=ElArr[i];
Curr^.Prev:=PrevEl;
PrevEl^.Next:=Curr;
PrevEl:=Curr;
end;
end;
procedure Add_SrAr; {добавляет в начало среднее арифметическое}
begin
new(Curr);
Curr^.Data:=SrAr;
Curr^.Next:=Head;
Head^.Prev:=Curr;
Head:=Curr;
end;
procedure Add_SrGeom; {и, соответственно, среднее пропорцианальное}
begin
new(Curr);
Curr^.Data:=SrGeom;
Curr^.Prev:=PrevEl;
PrevEl^.Next:=Curr;
PrevEl:=Curr;
end;
procedure Main;
begin
randomize;
for i:=1 to n do ElArr[i]:=random;
sum:=0; prod:=1;
for i:=1 to n do
if not odd(i) then
begin
Add_el;
sum:=sum+ElArr[i];
prod:=prod*ElArr[i];
inc(kol);
end;
SrAr:=sum/kol;
Add_SrAr;
SrGeom:=sqrt(prod);
Add_SrGeom;
end;
begin
clrscr;
Main
end.
проверял...вроде работает... но для меня тема списков, динамических переменных и т.д. новая, поэтому если кто найдет ошибки - напишите, плиз, буду благодарен!!!