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 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    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
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  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 944
    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 944
    Points : 59 433
    Points
    59 433
    Billets dans le blog
    2
    Par défaut
    Salut !

    J'ai débuté avec la version 4 et ça existait déjà !
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  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