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 :

Probleme de retour sur une fonction qui renvoi un pointeur


Sujet :

C++

  1. #1
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut Probleme de retour sur une fonction qui renvoi un pointeur
    Chères amies, chers amis du forum

    je souhaite creer une fonction qui rempli un arbre:

    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
     
    void noeud::init_arbre (noeud *const arbre, double x_0, double a, double b)
    {
    	noeud *pt_dash;
     
    	pt_dash=arbre;
    	double su,sd;
     
    	if (pt_dash->fils_haut!= NULL )
    	{
    		arbre->valeurs = &x_0;
    				if ( pt_dash->fils_haut->valeurs == NULL)
    					{
    						su=*pt_dash->fils_haut->pere_bas->valeurs*a;
    						double Tab[4]={su,0,0,0};
    						pt_dash->fils_haut->set_valeurs(Tab,4);
    					}
    				if ( pt_dash->fils_bas->valeurs == NULL)
    					{
    						sd=*pt_dash->fils_bas->pere_haut->valeurs*b;
    						double Tab[4]={sd,0,0,0};
    						pt_dash->fils_bas->set_valeurs(Tab,4);
    					}
    				pt_dash->init_arbre(pt_dash->fils_haut,su,a,b);
    				pt_dash->init_arbre(pt_dash->fils_bas,sd,a,b);
     
     
    	}
    }
    Juste avant la dernier accolade avant de sortir de la fonction voila ce que renvoie l'espion

    Mais quand je sort de la fonction dès la premiere qui suit les valeurs me retourne des valeurs du genre 5.304920671855e-314#DEN

    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    Quand tu fais :
    Tu stockes l'adresse d'une variable locale, qui n'existe plus une fois sorti de la fonction...

    MAT.

  3. #3
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut
    Merci

    Cependant la valeurs du premiers noeud est bien rester à 100.
    Aurais tu une idées pour corriger cette erreur, afin de remplir les pointeur valeurs
    de mon arbre

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Stocke des double et non des double* dans noeud pour valeurs.

    MAT.

  5. #5
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut
    Merci
    Aie, le probleme c'est que valeurs est un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    private :
    	noeud * pere_haut ;
    	noeud * pere_bas ;
    	noeud * fils_haut ;
    	noeud * fils_bas ;
    	double * valeurs ;
    rempli par la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void set_valeurs ( double T[], int n) {
    			if ( valeurs != NULL ) delete [] valeurs ;
    			valeurs = new double [n];
    			for ( int i=0; i<n;i++) 
    				{
    					valeurs [i]=T[i];
    				};
    et je n'ai aucune marche de manœuvre parce que cette classe est imposé

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    La classe noeud est imposée ? C'est pas toi qui a écrit noeud::init_arbre ?

    Comme tu peux le voir dans l'implémentation de set_valeurs, c'est pas si simple pour mettre des valeurs dans valeurs.
    Soit tu fais pareil, soit tu passes par set_valeurs au lieu de faire arbre->valeurs =.

    C'est quoi ce T dans set_valeurs ? La méthode est template ?

    MAT.

  7. #7
    Membre régulier Avatar de Nono Sto
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 350
    Points : 74
    Points
    74
    Par défaut
    Merci

    C'est con comme la lune, pourquoiu j'ai pas pensé à utliser set valeurs, que j'utilise aprés dans la fonction.

    T[] est un tableau qu'onrendre en parametre

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 28/04/2011, 14h19
  2. Réponses: 5
    Dernier message: 25/09/2006, 11h06
  3. Comment faire une fonction qui renvoi un tableau.
    Par poly128 dans le forum Delphi
    Réponses: 2
    Dernier message: 01/06/2006, 01h04
  4. [9i] PLS-00320 avec une fonction qui renvoi un curseur
    Par hoaxpunk dans le forum Oracle
    Réponses: 5
    Dernier message: 09/02/2006, 17h04
  5. [VB6] Comment faire une fonction qui renvoie 2 résultats
    Par tazarine dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 15/01/2004, 00h13

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