Bonjour,

Le problème: Eclatement d'une liste chainée en 2 autres, l'une contenant les valeurs negatives et l'autre les positives

Voila mon programe..l'eclatement ne marche pas !!!
pouvez vous m'aider!?( merci d'avance!)


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
program amar;
uses wincrt;
type pointeur=^cellule;
     cellule=record
             valeur:integer;
             suivant:pointeur;
             end;
 
var debut,pt1,pt2:pointeur;
    rep:integer;
 
 
 
procedure creation(var debut:pointeur);
var courant:pointeur; s:integer;
Begin
writeln('continuer:1          fin de liste:0  ');
courant:=nil;
s:=1;
repeat
new(debut);
write('enter la ',s,'eme valeur :'); read(debut^.valeur);
debut^.suivant:=courant;
s:=s+1;
write('continuer ou fin de liste?  :'); writeln;
read(rep);
if rep=1 then courant:=debut;
until rep=0;
end;
 
 
 
 
 
procedure affichage(var debut:pointeur);
begin
writeln('l''affichage de la liste :');
while debut <> nil do
begin writeln(debut^.valeur); debut:=debut^.suivant; end;
end;
 
 
procedure eclatement(debut:pointeur; var pt1,pt2:pointeur);
var pc,pQ1,pQ2:pointeur;
 
Begin
pc:=debut;
pt1:=nil; pt2:=nil; pQ1:=nil; pQ2:=nil;
while (pc <> nil) do
                  begin
                       if (pc^.valeur >= 0) then begin
                                                      if (pt1=nil) then pt1:=pc
                                                      else pQ1^.suivant:=pc;
                                                      pQ1:=pc;
                                                      pc:=pc^.suivant;
                                                 end
                       else  begin
                                 if (pt2=nil) then pt2:=pc
                                 else pQ2^.suivant:=pc;
                                 pQ2:=pc;
                                 pc:=pc^.suivant;
                            end;
                            pQ1^.suivant:=nil; pQ2^.suivant:=nil;
                  end;
End;
 
BEGIN
creation(debut);
affichage(debut);
eclatement(debut,pt1,pt2);
affichage(pt1);
affichage(pt2);
end.