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

C++ Discussion :

liste chaine: boucle infini dans la procedure daffichage


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut liste chaine: boucle infini dans la procedure daffichage
    salut

    voila jai une liste chain�e avec un procedure d'intersion qui insert au debut ou au milieu de ma liste mes objets (des chocolat class� par poids)


    j'ai cr�e une procedure de parcours qui fonctionne tres bien pour linsertion au debut mais pas pour linsertion au milieu

    je ne comprend pas pourquoi cela plante
    donc voici la procedure d'insertion au milieu:

    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
     
    //Les chocolats seront classés par poid 
    void liste_chocolat::insertion_milieu(chocolat *ptinsert)
    {
    	//declaration de ptcoutant et ptprecedent : pointeur de chocolat
    	chocolat *ptcourant;
    	chocolat *ptprecedent;
     
    	//ptcourant recoit premier
    	ptcourant=premier;
     
    	/*tant que ptcourant n'est pas nul et que le poid de ptinsert est surpperieur a celui de ptcourant faire
    		ptprecedent recoit ptcourant
    		ptcourant recoit ptinsert
    	fin de boucle*/
    	while((ptcourant!=NULL)&&(ptinsert->get_poid()>ptcourant->get_poid()))
    	{
    		ptprecedent=ptcourant;
    		ptcourant=ptinsert;
    	}
     
    	ptinsert->setsuivant(ptcourant);
    	ptprecedent->setsuivant(ptinsert);
    }
    et voici la procedure de parcours:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
    void liste_chocolat::parcours()
    {
    	// declaration d'un pointeur ptcourant de type chocolat//
    	chocolat *ptparcours;
     
    	ptparcours= premier;
    	while (ptparcours!=NULL)
    	{
    		ptparcours->affichage();
    		ptparcours=ptparcours->getsuivant();
    	}
    }
    voila merci par avance

  2. #2
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    je suppose que "premier" est la tete de liste, tu doit lui-aussi le passer en parametre
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut
    Citation Envoy� par le y@m's
    je suppose que "premier" est la tete de liste, tu doit lui-aussi le passer en parametre
    ok je doit le passe mais dans quelle procedure laffichage ou linsertion au milieu?

    car laffichage avec linsertion au debut fonctionne correctement

    donc je sai spas si sa vient vraiment de mon affichage ou de mon insertion au milieu


    merci
    ps voici linsertion au debut
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    void liste_chocolat::insertion_debut(chocolat *ptinsert)
    {
     
    	ptinsert->setsuivant(premier);
    	premier=ptinsert;
    }

  4. #4
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    a moins que tu n'ais declar� "premier" en global (� eviter), celui-ci est inconnu dans tes fonctions, c'est pour �a que tu doit passer ta tete de liste � toute tes fonctions qui l'utilisent.
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut
    bin en fait premier, c'est effectivement mon premier objet de la liste
    mais je linitialise avec un constructeur de ma classe liste dont voici le code:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    liste_chocolat::liste_chocolat()
    {
        premier=new chocolat;
    	premier->saisie();
    	premier->setsuivant(NULL);
     
    }
    en fait premier c mon premier objet chocolat apres dans mon programme principal je creer un autre chocolat si son poid est inferieur a celui de premier alors il est inserer avant premier et la aucun souci pour afficher les 2 objet grace a ma liste parcours
    sinon sil est plus lours alors sa laffiche apres premier et la sa tourne sans fin

    alors je pense que le probleme ne vient pas de ma procedure de parcours mais de mon insertion milieu

    mais je peus me tromp�

    par contre je ne comprned tjs pas ou tu veus que je mette premier en parametre si c dans la procedure parcours ou insertion milieu?


    merci de ton aide en tout cas car je takine pas trop le c++

  6. #6
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    desole j'avais pas compris, effectivement, ya pas besoin de passer premier en parametre etant donne que c'est un membre de ta classe, encore desole je vais me pencher un peu plus sur l'algo.
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  7. #7
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    je crois que j'ai trouv�,
    dans ta boucle, normalement "ptcourant" doit re�evoir "ptcourant->getsuivant()" et pas "ptinsert".
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  8. #8
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    je ne comprend pas pourquoi cela plante
    Essaye d�j� d'utiliser le debugger ou au pire de mettre des traces dans ton code, pour localiser un peu mieux l'erreur.

  9. #9
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut
    Citation Envoy� par le y@m's
    je crois que j'ai trouv�,
    dans ta boucle, normalement "ptcourant" doit re�evoir "ptcourant->getsuivant()" et pas "ptinsert".

    petar exellent ct sa mon erreur

    en tout cas merci

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut
    re

    je reviens pour poser une derniere question car je suis en train de mettre des commentaire pour pas oublier

    donc voici ma question tjs pour la procedure dinsertion milieu:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    	while((ptcourant!=NULL)&&(ptinsert->get_poid()>ptcourant->get_poid()))
    	{
    		ptprecedent=ptcourant;
    		//pt courant = ptsuivant par l'accesseur getsuivant()
    		ptcourant=ptcourant->getsuivant();
     
    	}
     
    	ptinsert->setsuivant(ptcourant);
    	ptprecedent->setsuivant(ptinsert);
     
    }
    ptinsert->setsuivant(ptcourant) : cela signifie que ptinsert est attibu� comme le suivant de ptcourant

    voici ma procedure setsuivant()
    void chocolat::setsuivant(chocolat *psuivant)
    {
    suivant=psuivant; //donne le suivant
    }

    merci par avance

  11. #11
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    c'est quoi ta question ?
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut
    Citation Envoy� par le y@m's
    c'est quoi ta question ?
    ta vu apres ma boucle tant que il y a

    ptinsert->setsuivant(ptcourant)

    cela signifie que ptcourant devient le suivant de ptinsert ou ptinsert devient le suivant de ptcourant

    car comme en dessous je mets ptprecedent->setsuivant(ptinsert)
    or ptprecendent=ptcourant par la boucle

    sa fait que je comprend plus ces 2 lignes

    car c juste pour mettre une phrase en comentaire car je commence a membrouilli� et comme je commence a comprendre la programmation objet alors avec les pointeurs sa devient farfelu

  13. #13
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    or ptprecendent=ptcourant par la boucle
    oui mais juste apr�s ptcourant=ptcourant->getsuivant() donc en fait ptcourant est le suivant de ptprecedent, puis tu insere ptinsert entre les deux quand tu sort de la boucle.
    cqfd
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut
    Citation Envoy� par le y@m's
    or ptprecendent=ptcourant par la boucle
    oui mais juste apr�s ptcourant=ptcourant->getsuivant() donc en fait ptcourant est le suivant de ptprecedent, puis tu insere ptinsert entre les deux quand tu sort de la boucle.
    cqfd
    ok merci je vais mettre un gros commentaire car comme je prepare sa pour un examen oral s'ils me pose la question et que je sais pas torp lexplik� aille

    merci en tout cas de ton aide
    ++

  15. #15
    Expert confirm�
    Avatar de le y@m's
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2005
    Messages
    2 636
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels
    Secteur : High Tech - Produits et services t�l�com et Internet

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 2 636
    Par d�faut
    pour te faciliter la comprehension :
    [oral]
    ptprecedent=ptcourant;
    veut dire que ptprecedent pointe vers l'element courant
    ptcourant=ptcourant->getsuivant();
    veut dire que ptcourant pointe vers l'element suivant
    donc � ce stade :
    ptprecedent represente l'element courant
    et ptcourant represente l'element suivant

    d'o� la difficult� de comprehension. n'hesite pas � mettre 1 tonne de commentaires (si un jour tu y reviens apres un certain temps, tu les aprecieras).
    bonne prog
    Je ne r�pondrai � aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a �t� trouv�e � votre probl�me
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  16. #16
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    164
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 164
    Par d�faut
    merci beaucoup
    ++

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Liste chain�e & boucle infinie
    Par emixam16 dans le forum C
    R�ponses: 9
    Dernier message: 03/06/2015, 12h31
  2. probleme de boucle while dans une procedure stock�e
    Par aboulemagnifique dans le forum SQL Proc�dural
    R�ponses: 6
    Dernier message: 08/08/2007, 12h39
  3. R�ponses: 1
    Dernier message: 28/07/2006, 11h11
  4. R�ponses: 29
    Dernier message: 17/06/2006, 13h04
  5. symptome de la boucle infinie dans une requete
    Par ouam81 dans le forum Langage SQL
    R�ponses: 8
    Dernier message: 27/05/2005, 12h10

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