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 vecteurs Arbre binaire


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Problème vecteurs Arbre binaire
    Bonjour,

    Je rencontre un problème avec un vecteur de type node (c'est une structure que j'ai réalisé avec des fonctions pour les arbres binaires).

    Tout d'abord lorsque j'affiche le "poids" et le "code" dans la boucle for, j'obtiens le bon résultat.
    Mais si j'affiche le "poids" et le "code" juste après la boucle for, par exemple pour le 5ème élément de mon vecteur alors le "poids" et "code" correspond à celui du dernier élément et c'est pareil pour tous les éléments de mon vecteur.

    J'ai donc réalisé un test avec un vecteur de type int, et là ça marche, j'obtiens bien "5" pour le 5ème élément de ce vecteur.

    Voici mon code :

    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
     
    vector<node*> T_Arbre(10);
    vector<int> T_int(10);
    node* Arbre = NULL;
    addNode(&Arbre, tab_frequence[0], tab_carac[0]); //addNode(node **tree, unsigned int poids, char code)
    int y = 0;
    for(int i = 0; i <= 10; i++)
    {
    	while(y <= 28)
    	{
    		if(tab_frequence[y] != 0)
    		{
    			setCode(Arbre, tab_carac[y]);
    			setPoids(Arbre, tab_frequence[y]);
    			break;
    		}
    		y++;
    	}
    	y++;
    	T_Arbre[i]	= Arbre;
    	T_int[i]	= i;
    	cout << "poids : " << T_Arbre[i]->poids << endl;	//Retourne bien le poids i.
    	cout << "code : " << T_Arbre[i]->code << endl;  	//Retourne bien le code i.
    	cout << "Compteur : " << T_int[i] << endl;		//Retourne bien le compteur i.
     
    }
    cout << "poids : " << T_Arbre[5]->poids << endl;		//Erreur, cela retourne le poids du 10ème élément.
    cout << "code : " << T_Arbre[5]->code << endl;			//Erreur, cela retourne le code du 10ème élément.
    cout << "Compteur : " << T_int[5] << endl;      		//Retourne bien le compteur 5.
    Merci d'avance pour votre aide,

    Cordialement, Flo FR

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 147
    Points : 116
    Points
    116
    Par défaut
    Dans ta boucle for tu fais varier l'indice de 0 à 10 inclus alors que ton tableau n'est déclaré pour pour 10 valeurs (de 0 à 9).

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    En effet, c'est la raison pour laquelle mon programme cessé de fonctionner, Merci.

    Mais j'ai toujours le problème, après avoir fait quelques test d'affichage j'ai trouvé d'où vient le problème mais je n'arrive pas à le résoudre.

    En fait, quand je fais T_Arbre[i] = Arbre, l'élément i prend bien les valeurs de "Arbre" mais le problème c'est que cela modifie aussi i-1 i-2 etc j'ai l'impression que ça fait en même temps T_Arbre[i-1] = Arbre, T_Arbre[i-2] = Arbre donc à la fin je me retrouve avec les dernières valeurs de Arbre dans toutes les cases de mon tableau :/

    J'imagine qu'il doit y avoir un problème d'adresse/pointeur, lorsque je fais T_Arbre[i-1] = Arbre ?

    Merci d'avance pour votre aide

    Flo FR

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    "T_Arbre[i-1] = Arbre"

    Je pense que le problème c'est que je lui passe l'adresse de "Arbre" en utilisant l'opérateur "=" ?
    Donc dans la logique ça explique pourquoi ça modifie mes précédentes cases, donc il faudrait que je crée un Arbre pour chaque case de mon tableau ?
    Ou il y aurait un moyen de lui associer les valeurs de Arbre sans lui donner son adresse pour éviter de créer 11 Arbres ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    J'ai essayé avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    T_Arbre[i]->poids	= Arbre->poids;
    T_Arbre[i]->code	= Arbre->code;
    à la place de :
    Mais maintenant ça me met que le programme a cessé de fonctionner.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 12
    Points : 9
    Points
    9
    Par défaut
    En fait c'est bon, j'avais juste oublié d'utiliser ma fonction addNode pour initialiser mes Arbres dans mon vecteur

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

Discussions similaires

  1. problème construction arbre binaire
    Par blackbird1 dans le forum C++
    Réponses: 14
    Dernier message: 27/04/2015, 10h00
  2. Problème d'arbre binaire
    Par scary dans le forum C
    Réponses: 2
    Dernier message: 31/01/2009, 18h54
  3. probléme avec arbre binaire
    Par lanageuse56 dans le forum C
    Réponses: 13
    Dernier message: 17/05/2007, 16h50
  4. Problèmes destructeurs + "arbre" de vecteurs
    Par mangobango dans le forum XML
    Réponses: 8
    Dernier message: 04/05/2007, 10h24
  5. [Méthode de tri][Arbre binaire] Problème dans l'ordre total
    Par jgavard dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 24/04/2007, 16h55

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