Вот как я сделала, но опять же не работает:
PROCEDURE DIVIDE (FIRST2,FIRST3:EL);
TYPE
MAS1=ARRAY[1..100] OF INTEGER;
TMAS1=^MAS1;
MAS2=ARRAY[1..100] OF STRING;
TMAS2=^MAS2;
VAR
Z1,Z3:TMAS1;
Z2,Z4: TMAS2;
OK: BOOLEAN;
X,K1,K2: INTEGER;
R: EL;
BEGIN
NEW(Z1);
NEW(Z2);
print;
writeln ('Vvedite znachenie kluchevogo priznaka');
readln(x);
r:= first;
ok:= true;
while (r<>nil) and ok do
if r^.inf1=x then begin
q:=r ;
ok:= false;
end
else r:=r^.Next;
if ok=true
then begin
writeln (' takogo el net' );
Exit;
end;
P:=FIRST;
K1:=0; K2:=0;
WHILE P<> NIL
DO BEGIN
IF P^.INF1<Q^.INF1
THEN BEGIN
INC(K1);
Z1^[K1]:=P^.INF1;
Z2^[K1]:=P^.INF2;
END
ELSE BEGIN
INC(K2);
Z3^[K2]:=P^.INF1;
Z4^[K2]:=P^.INF2;
END;
END;
Q:=NIL;
FIRST1:=NIL;
FOR I:=1 TO K1 DO
BEGIN
new(p);
if first1=nil then first1:=p;
p^.inf1:=Z1^[i];
p^.inf2:=Z2^[i];
if q<>nil then q^.next:=p;
q:=p;
end;
p^.next:=nil;
print;
WRITELN('NAGMITE ENTER');
READLN;
Q:=NIL;
FIRST2:=NIL;
FOR I:=1 TO K2 DO
BEGIN
new(p);
if first1=nil then first2:=p;
p^.inf1:=Z3^[i];
p^.inf2:=Z4^[i];
if q<>nil then q^.next:=p;
q:=p;
end;
p^.next:=nil;
print;
END;
вызов: divide(FIRST2,FIRST1);