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

Langage Pascal Discussion :

[LG]liste chainee + pointeur + affichage


Sujet :

Langage Pascal

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [LG]liste chainee + pointeur + affichage
    voila j'ai un petit probleme, mon programme compile mais ne fonctionne pas comme j'aimerai,pourriez vous m'aider.
    mon prog est cense demande a l'utilisateur les valeurs q'il veut mettre dans sa liste (procedure creation)et ensuite les afficher (procedure affichage) mais le pb c que le prog affiche tjs le dernier element...
    merci d'avance de votre aide

    voici une partie de mon prog:

    procedure creation (var tdl,fdl:ptliste; element:integer;nbel:integer);
    {procedure qui initialise la liste chainee en fonction des valeurs desirees par l'utilisateur}

    var nouveau : ptliste;
    var I : integer;

    begin
    nb_tot_el := 0;
    {le nbre d'element de la liste est encore nul donc initialisation du compteur a 0}
    new(nouveau);
    {creation d'1 espace dans la memoire ayant pour taille celle du ptliste}
    for I := 1 to nbel do
    begin
    writeln ('quel element doit on ajouter?');
    readln (element);
    nouveau^.info := element;
    nouveau^.suiv := nil;
    if tdl <> nil
    then fdl^.suiv := nouveau
    else tdl := nouveau;
    nb_tot_el := nb_tot_el + 1;
    {on incremente le compteur a chaque passage dans la boucle}
    end;
    writeln ('le nb d''element ki compose votre liste est de :', nb_tot_el);
    end;



    procedure affichage (fdl:ptliste;nb_tot_el:integer);
    {procedure qui affiche a l'ecran de l'utilisateur les elements composant la liste}

    var ptint : ptliste;
    var I : integer;

    begin
    for I := 1 to nb_tot_el do
    begin
    ptint := fdl;
    while ptint <> nil do
    begin
    writeln (ptint^.info);
    ptint := ptint^.suiv;
    end;
    end;
    end;

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 465
    Points : 4 312
    Points
    4 312
    Par défaut



    LISEZ LES REGLES DU FORUM

    Dans ta liste, tu ajoute l'élément passé en paramètre nbel fois, donc c'est toujours le même que tu ajoutes.... Donc c'est toujours le même que tu affiches....

    Allez je me fais plaisir

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 46
    Points : 50
    Points
    50
    Par défaut liste chainee + pointeur + affichage URGENT !!!!!!!
    Pourquoi "new(nouveau)" est en dehors de la boucle "For ..." ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2003
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    tu t un peu planter dans ton bordel
    tiens regarde ça
    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
     
    procedure creer_liste_chaine(var TDL:ptliste;var nbelem:integer);
    var element:integer;
        ptint:ptliste;
        i:integer;
    begin
         ptint:=nil;
         writeln('nombre d''‚l‚ment de d‚part : ');
         readln(nbelem);
         for i:=1 to nbelem do
             begin
               write('valeur de l''‚l‚ment nø ',i);
               writeln;
               readln(element);
               insere_tete(ptint,element);
             end;
         TDL:=ptint;
    end;
    aussi pour l'insertion en tete qui sert pas mal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure insere_tete(var TDL:ptliste;element:integer);
    var nouveau:ptliste;
    begin
         new(nouveau);
         nouveau^.elem:=element;
         nouveau^.suiv:=TDL;
         TDL:=nouveau;
    end;
    et maintenant pour l'affichage

    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
     
     
    procedure afficher_liste(TDL:ptliste);
    var ptint:ptliste;
    begin
         ptint:=TDL;
         if TDL=nil then writeln('il n''y a pas encore de liste cr‚e')
         else begin
                while (ptint<>nil) do
                      begin
                           write(' ',ptint^.elem,' ');
                           ptint:=ptint^.suiv;
                      end;
                writeln;
              end;
    end;
    en esperant que cela te serve bien
    @+
    mister dsg

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Petite question HS : A partir de quel version de TP peut on utiliser les liste chainé ptliste :

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 949
    Points : 59 619
    Points
    59 619
    Billets dans le blog
    2
    Par défaut
    Salut !

    J'ai débuté avec la version 4 et ça existait déjà !

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2004
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 8
    Points : 10
    Points
    10
    Par défaut
    ecoute, pour ton probleme, tu n'as qu'à mettre l'instruction new(nouveau) dans la boucle comme a dit MCoder, à ça va marché.

Discussions similaires

  1. [ddd]Affichage d'une liste chainée.
    Par granquet dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 01/12/2006, 06h58
  2. probleme d affichage une liste chainee
    Par lhagames dans le forum C
    Réponses: 10
    Dernier message: 25/03/2006, 11h33
  3. Réponses: 6
    Dernier message: 21/02/2006, 16h47
  4. problème de pointeur avec les listes chainees
    Par innosang dans le forum C
    Réponses: 9
    Dernier message: 30/12/2005, 15h46
  5. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2004, 19h49

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