Les poinnteurs

infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012 - 7 juil. 2006 à 12:41
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 - 9 juil. 2006 à 05:50
salut tous le monde ,

j'ai un probléme de pointeur je perd l'adresse de deux tableux (LPR[C+1] , LPRd[C+1],) que je veux afficher à l'extérieure d'une fonction, voici la fonction en question

/////===============================================================
void Noeud:: Reconstruction(vecteur xi,int dim, Noeud *root,Noeud *r,PageRegion *LPRg[C+1],PageRegion *LPRd[C+1],int *nbg,int *nbd)
{
  Rect rect0,rect1;
  Noeud Ng1,Nd1;
  vecteur yi;


     for(int k=0;k<r->nbEntree;k++)
  {
   if(r->fils[k]->fils==NULL)
   {
    if(k==0)
    {
     if (((r->MBR).p2).coord[dim]<=xi.coord[dim] )
     {
      cout<<endl;cout<<" ====== gauche ===== "<<(*nbg)<<endl;
      LPRg[(*nbg)]=new PageRegion((*r).MBR,r);
      LPRg[(*nbg)++]->MBR.afficher();getch();
     }
                 else
      if( ((r->MBR).p1).coord[dim]>=xi.coord[dim] )
      {
           cout<<endl;cout<<"========= droite ======="<<(*nbd)<<endl;
           LPRd[(*nbd)]=new PageRegion((*r).MBR,r);
           LPRd[(*nbd)++]->MBR.afficher();getch();
      }
     else
     {
        cout<<endl;cout<<" =========  inter ======= "<<endl;getch();
         r->MBR.afficher();
      
         yi=((((*r).fils[k])->MBR).p1);
         yi.coord[dim]=xi.coord[dim];
      
         Noeud::SplitNoeud(yi,dim, r, &Ng1,&Nd1);
         LPRg[(*nbg)++]=new PageRegion(Ng1.MBR,&Ng1);
         LPRd[(*nbd)++]=new PageRegion(Nd1.MBR,&Nd1);
             
      }
    }
   }
   else
    Reconstruction(xi,dim,root,r->fils[k]->fils,LPRg,LPRd,nbg,nbd);


  }
}
////================================================================

Quelqu'un à une idée???????? merci d'avance pour toute remarque.

7 réponses

rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
7 juil. 2006 à 17:23
Bonjour ,
J'ai du mal à comprendre ton probleme , tu veux garder l'adresse des tableaux
de pointeurs de PageRegion LPR[] et LPRd[]?
0
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
7 juil. 2006 à 18:00
je veux afficher les valeurs de ces deux tableaux à l'extérieure de la fonction, je récupére des valeurs eronnées je ne sais pas pourquoi?
0
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
7 juil. 2006 à 18:39
Je vais peut etre simplifier plus la fonction , voici une autre version de cette fonction:
/////===============================================================
void Noeud:: Reconstruction(vecteur xi,int dim, Noeud *root,Noeud *r,PageRegion *LPRg[C+1],PageRegion *LPRd[C+1],int *nbg,int *nbd)
{
  Rect rect0,rect1;
  Noeud Ng1,Nd1;
  vecteur yi;
     for(int k=0;k<r->nbEntree;k++)
  {
   if(r->fils[k]->fils==NULL)
   {
    if(k==0)
    {
          if(((r->MBR).p2).coord[dim]<=xi.coord[dim] )
     {
        cout<<endl;cout<<" =========  inter ======= "<<endl;getch();
         r->MBR.afficher();
      
         yi=((((*r).fils[k])->MBR).p1);
         yi.coord[dim]=xi.coord[dim];
      
         Noeud::SplitNoeud(yi,dim, r, &Ng1,&Nd1);
         LPRg[(*nbg)++]=new PageRegion(Ng1.MBR,&Ng1);
         LPRd[(*nbd)++]=new PageRegion(Nd1.MBR,&Nd1);
             
      }
    }
   }
   else
    Reconstruction(xi,dim,root,r->fils[k]->fils,LPRg,LPRd,nbg,nbd);

  }
}
////================================================================
voila je ne recupere plus les valeur des deux tableuax LPRg[] et LPRd[]. quelqu'un sais pourquoi?
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
7 juil. 2006 à 19:22
Faut peut etre que tu modifie la fonction comme ca :
void
Noeud:: Reconstruction(vecteur xi,int dim, Noeud *root,Noeud
*r,PageRegion **LPRg,PageRegion **LPRd,int *nbg,int *nbd)

++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
infodaoudi Messages postés 117 Date d'inscription vendredi 10 février 2006 Statut Membre Dernière intervention 30 mars 2012
8 juil. 2006 à 18:31
j'ai essayéca ne marche tjs pas
0
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
8 juil. 2006 à 18:59
Il faut peut etre aussi modifier ca
         LPRg[(*nbg)++]=new PageRegion(Ng1.MBR,&Ng1);
         LPRd[(*nbd)++]=new PageRegion(Nd1.MBR,&Nd1);
 en
         (*LPRg)[(*nbg)++]=new PageRegion(Ng1.MBR,&Ng1);

         (*LPRd)[(*nbd)++]=new PageRegion(Nd1.MBR,&Nd1);

++
0
rrk275 Messages postés 540 Date d'inscription vendredi 25 juin 2004 Statut Membre Dernière intervention 1 octobre 2007 2
9 juil. 2006 à 05:50
Apres reflexion, et etude de ce code,
#include


using namespace std;


class entier
{
 public:
 int nb;
 entier(int n)
 {
  nb = n;
 }
};


void fun(entier *t[5])
{
 t[0] = new entier(15);
}


int main ()
{
 entier *t[5];
 fun(t);
 printf("%d",t[0]->nb); 
 system("pause");
}


qui affiche 15, je me dis que surement l'erreur vient de l'affichage ou est dans ta fonction ... , car j'ai reproduit le schema pour en etre sur donne nous le code qui l'affiche ...
0
Rejoignez-nous