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 :

Arbre de liste d'arbre [C]


Sujet :

C

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Arbre de liste d'arbre [C]
    Bonjour,

    dans le cadre d'un projet de robotique, je suis amenée à pousser à bout mes connaissances en C, mais je fais malheureusement face à un problème insoluble pour moi...
    Après avoir isolé le problème, je me permet de vous le soumettre dans le cas où quelqu'un l'aurait déjà rencontré.

    Le code consiste en la création d'une structure d'arbre dont chaque noeud contient une coordonnées et 20 fils inclus dans une liste.
    Un élément de ce type est envoyé dans une sous-fonction pour modifier la coordonnée de ses fils.
    C'est lors de la modification de la coordonnée qu'il plante.
    Le compilateur ne trouve aucune erreur, c'est lors de l'exécution que l'erreur apparait.

    Voici le code complet :

    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
     
    #include <stdlib.h>
    #include <stdio.h>
     
    typedef struct noeud
    {
        int x;
        struct noeud* fils[20];
    }intersection;
     
    void remplir(noeud* inter);
     
    int main ( int argc, char** argv )
    {
        noeud premiere;
     
        remplir(&premiere);
     
        return 0;
    }
     
    void remplir(noeud* inter)
    {
        int i;
     
        for (i=0;i<2;i++)
        {
            // l'erreur se situe à la ligne suivante
            (inter->fils[i])->x =0;
        }
    }
    Alors que cet autre code fonctionne très bien,
    mais ce n'est pas vraiment ce que je veux...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void remplir(noeud* inter)
    {
        int i,j;
     
        for (i=0;i<2;i++)
        {
            j = 2;
            (inter->fils[j])->x =0;
        }
    }
    Voila, merci d'avance

  2. #2
    Membre éclairé
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Points : 750
    Points
    750
    Par défaut
    En fait, tes 20 fils sont des pointeurs mais non initialisés (il pointent donc n'importe où. Il faut:
    • soit changer ta structure, avec struct noeud fils[20].
    • soit allouer ces fils (avec malloc)


    Attention, en C un 'struct foo' et 'foo' sont différents (mais identiques en C++), le prototype de remplir() est donc faux, ainsi que la déclaration de premiere (c'est soit struct noeud, soit intersection)

  3. #3
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Juin 2011
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Wahou merci beaucoup!

    En fait j'avais fait une grosse méprise puisque mon projet et un projet SDL et en isolant ce problème j'avais zappé le passage C/C++, c'était donc du C++...
    J'avais également fait une erreur avec la structure intersection en isolant le problème...

    Mais tu avais entièrement raison sur la non initialisation des variables!
    Une petite initialisation, et c'est repartit

    Problème résolu, encore merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transformer une liste en arbre
    Par alana dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 25/06/2009, 14h34
  2. d'une liste à un arbre
    Par wafiwafi dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 30/12/2008, 18h31
  3. Réponses: 18
    Dernier message: 20/09/2007, 22h04
  4. Initialisation d'un arbre avec liste
    Par Naruto_kun dans le forum C
    Réponses: 15
    Dernier message: 02/01/2006, 22h43

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