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 :

problème liste chainée


Sujet :

C

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut problème liste chainée
    bonjour,

    voila mon probleme : j'ai une liste chainée définie comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     typedef struct noeud
    {
    int  cochonx; 
    int cochony; 
    int dead;
    struct noeud * suivant;
    } * COCHON;
    ça marche très bien. seulement, je voudrais ajouter 2 variables à ma structure, c'est à dire l'écrire comme ça :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     typedef struct noeud
    {
    int  cochonx; 
    int cochony; 
    int dead;
    int xpre;
    int ypre;
    struct noeud * suivant;
    } * COCHON;
    et là ça compile, mé à l'execution j'obtient un bus error.
    Y a t il un nombre max de variable ? ou cela proviendrait il de mon programme ?
    merci !

  2. #2
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Le problème ne vient pas de là. Il faut nous montrer ton code...

  3. #3
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par jonjon83
    Y a t il un nombre max de variable ?
    Non
    ou cela proviendrait il de mon programme ?
    A priori oui.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    en fait le programme est assez long... donc le montrer sa prendrait des pages et des pages.
    je pense que ça doit venir d'un parcourt de ma liste douteux.
    je me penche la dessus.
    si vous avez des pistes elles sont les bienvenues
    merci encore

  5. #5
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Dans le cas d'une modif aussi importante de la structure, et vu la longueur, (et le partage du code en différents fichiers ?) il est peut-être utile de faire une recompile complète du programme.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    effectivement mon programme est en plusieurs fichiers .c et plusieurs header .h, mais j'utilise un makefile pour compiler, et donc tout le projet est recompilé à chaque fois.
    je ne pense donc pas que se soit un probleme du à la compilation

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    je pense que le probleme se situe dans une de ces 2 fonctions, mais je ne sais pas si c'est très compréhensible une fonction toute seule comme ç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
    19
    void deplacecochon(COCHON cochonpara)
    {
      COCHON cochontemp = malloc(sizeof(COCHON));
      cochontemp = cochonpara;
     
      while(cochontemp != NULL) 
      { 
     
    	if(cochontemp->dead == 0)
    	{
    	if (cochontemp->cochonx >loup.loupx)cochontemp->cochonx = cochontemp->cochonx-20;
    	if (cochontemp->cochonx <loup.loupx)cochontemp->cochonx = cochontemp->cochonx+20;
    	if (cochontemp->cochony >loup.loupy)cochontemp->cochony = cochontemp->cochony-20;
    	if (cochontemp->cochony <loup.loupy)cochontemp->cochony = cochontemp->cochony+20;		
    	}
    	cochontemp=cochontemp->suivant;
      }
      printcochon(cochon);
    }
    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
     
    void printcochon(COCHON cochonpara)
    {
      int b = 0;
     
      COCHON cochontemp = malloc(sizeof(COCHON));
      cochontemp = cochonpara;
      SetFgColor(Z0,GetRGBColor(0,0,255));/*fonction de la librairie libsx*/
     
      colisioncochon(cochontemp);
      while(cochontemp != NULL) 
      {
    	if(cochontemp->dead == 0)
    	{
    	b = 1;
    	DrawText("PIG",cochontemp->cochonx,cochontemp->cochony);	/*libsx*/	
    	}
    	else
    	{
     
    	/* 20 est la taille de la case*/
    	DrawFilledBox(cochontemp->cochonx-X0,cochontemp->cochony-Y0,20 ,20); /*libsx*/
    	}
    	cochontemp=cochontemp->suivant;
      }
     
      if(b==0) /*si tous les cochons sont morts*/
      {
      draw();
      initloup(loup.nbvie);
      initcochon(nbcochon=nbcochon*2);
      niveau++;
      affniv (niveau);
      }
     
    }
    est ce que quelque chose vous choque ?

  8. #8
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COCHON cochontemp = malloc(sizeof(COCHON));
    Il y a déjà un problème ici; COCHON est le type pointeur, mais il faut allouer de l'espace pour un élément de type struct noeud, pas de type COCHON.

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Citation Envoyé par jonjon83
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      COCHON cochontemp = malloc(sizeof(COCHON));
      cochontemp = cochonpara;
    ca, c'est choquant.

  10. #10
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Mais le problème ne vient pas de là, car juste après vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cochontemp = cochonpara;
    Vous allouez juste de l'espace mémoire inutilement et le perdez; néanmoins, ce ne devrait pas être la cause de votre erreur.

  11. #11
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    en fait,
    on a fait ce programme en binome, et cette partie c'est justement mon binome qui l'a faite.
    malgré les erreurs comme celles que vous avez citées, le programme fonctionne.
    j'essaye donc de ne pas toucher à ce qui marche même si ce n'est pas parfait, pour ne pas perdre de temps.
    mais la c'est vrai que ça coince.
    pour contourner le probleme, je pense que je vais utiliser 2 tableaux que je parcourerai en même temps que la liste.
    ce ne sera pas très joli, mais ça devrait marcher

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Points : 675
    Points
    675
    Par défaut
    Citation Envoyé par jonjon83
    en fait,
    on a fait ce programme en binome, et cette partie c'est justement mon binome qui l'a faite.
    malgré les erreurs comme celles que vous avez citées, le programme fonctionne.
    Que nenni! Ce programme tombe parfois en marche, en gros, ca depend un peu de la direction du vent.
    Citation Envoyé par jonjon83
    j'essaye donc de ne pas toucher à ce qui marche même si ce n'est pas parfait, pour ne pas perdre de temps.
    mais la c'est vrai que ça coince.
    pour contourner le probleme, je pense que je vais utiliser 2 tableaux que je parcourerai en même temps que la liste.
    ce ne sera pas très joli, mais ça devrait marcher
    ca pas vraiment la peine d'envoyer un nouveau post en cas de probleme alors, tu n'es pas le seul à ne pas vouloir perdre du temps.

Discussions similaires

  1. un petit problème : listes chainés
    Par anes-saad dans le forum C
    Réponses: 2
    Dernier message: 06/05/2011, 23h27
  2. Problème listes chainées
    Par ben54120 dans le forum Débuter
    Réponses: 16
    Dernier message: 28/10/2009, 19h05
  3. Problème Listes chainées Structure contenant
    Par loco_info dans le forum C
    Réponses: 3
    Dernier message: 17/05/2007, 13h08
  4. Problème Liste chainée
    Par skyangel dans le forum C++
    Réponses: 16
    Dernier message: 07/06/2006, 13h14

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