Пожалуйста, помогите решить задачу :
Описать процедуру (и проверить ее), которая по списку L строит два новых списка:
L1 – из положительных элементов;
L2 – из остальных элементов списка L (тип элементов – real ) .
program spiski;
uses crt;
type tinf=real; tp=^tel;
tel=record
inf:tinf;
psled:tp;
end;
var head:tp; m:real; otvet2:char; pe:tp;
procedure vsp(var iel:tinf; var head:tp);
var pe:tp; otvet:char;
begin
writeln ('Vedite elementi spiska L');
writeln('Dlya zaversheniya vvoda nazmite "E"');
repeat
read(m);
new(pe);
pe^.inf:=iel;
pe^.psled:=head;
head:=pe;
otvet:=readkey;
until otvet='e';
end;
procedure print(head1:tp);
var pk:tp;
begin
writeln('Spisok');
pk:=head;
while pk<>nil do
begin
write(pk^.inf:5:2,' | ');
pk:=pk^.psled
end;
writeln
end;
procedure vibor(head2: tp; var first, second: tp);
var pl1: tp;
begin
first := nil; second := nil;
while head2 <> nil do begin
new(pl1);
pl1^.inf := head2^.inf;
if head2^.inf > 0 then begin
pl1^.psled := first;
first := pl1
end
else begin
pl1^.psled := second;
second := pl1
end;
head2 := head2^.psled;
end;
end;
begin
repeat
clrscr;
vsp(m,head);
print(head);
vibor(head2);
writeln ('Dlya vihoda iz programmi nazmite " Y "');
otvet2:=readkey
until otvet2='y';
end.
.Procedure add_item(item: real; var list: tp);
begin
{ ... }
end;
, с ее помощью будет гораздо проще реализовать и заполнение первоначального списка, и раскидывание элементов одного списка на два других...