IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Eclatement d'une liste chaînée


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Par défaut Eclatement d'une liste chaînée
    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.

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Le code qui ne va pas est à l'ajout des cellules triées :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (pt1=nil) then pt1:=pc else pQ1^.suivant:=pc;
    pQ1:=pc;
    pc:=pc^.suivant;
    Si tu déroules le code manuellement, tu vois bien que c'est totalement incohérent, et que ca ne fait du tout ce que ca devrait faire..

Discussions similaires

  1. Eclatement d'une liste chaînée en 2 listes
    Par kar25 dans le forum Langage
    Réponses: 1
    Dernier message: 08/05/2009, 16h33
  2. Inversion d'une liste chaînée
    Par sossomj dans le forum Pascal
    Réponses: 10
    Dernier message: 25/06/2006, 15h51
  3. Implémentation d'une liste chaînée
    Par Yux dans le forum C
    Réponses: 22
    Dernier message: 02/03/2006, 20h31
  4. Réponses: 16
    Dernier message: 19/11/2005, 16h47
  5. Insertion d'un noeud dans une liste chaînée
    Par habib106 dans le forum Assembleur
    Réponses: 8
    Dernier message: 07/04/2004, 22h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo