Alimenter un tableau d'entiers a partir d'une liste chainée

Signaler
Messages postés
22
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 juin 2004
-
Messages postés
22
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 juin 2004
-
bonjour a ts,

j'ai une liste chainée qui contient les coordonées x,y d'un polygone. et je desire alimenter un tableau d'entiers a partir de ces données. voila ce ke je fais

/////////////////////////////////////////////////////////////////////

void TContour::insert_to_array()
{
int n=0;

TPPoint *p=debut;//une TContour est une liste de TPPoint.

while(p) //p!=NULL

{


n=n+1;
p=p->suiv;


}

int coordinates[n];//le tableau ke je desire alimenter.

p=debut;
int i=0;
while(p) //p!=NULL

{


coordinates[i]=p->x;
i++;
coordinates[i]=p->y;
i++;

p=p->suiv;


}
}

/////////////////////////////////////////////////////////////////////

class TPPoint
{
public: int x;
int y;
TPPoint * suiv;

TPPoint (const int, const int); //constructeur
virtual ~TPPoint();
friend class Contour;
};

/////////////////////////////////////////////////////////////////////

c:\tcontour.cpp(514) : error C2057: expected constant expression
c:\tcontour.cpp(514) : error C2466: cannot allocate an array of constant size 0
c:\tcontour.cpp(514) : error C2133: 'coordinates' : unknown size

/////////////////////////////////////////////////////////////////////

voila c tt, si vous avez une proposition elle sera la bienvenue.
merci d'avance.

return(0);)

3 réponses

Messages postés
24
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
10 juin 2004

au lieu de "int coordinates[n]" essaye avec:
int* coordinates = (int*)malloc(n * sizeof(int) );
@+
SHIRAH
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
10
et n'oublie pas le free à la fin quend tu n'as plus besoin de ton tableau
Comme tu bosses en C++, tu devrais peut-être plutot utiliser new et delete que malloc et free

int* coordinates = new int[n];
...
delete[] coordinates;
Messages postés
22
Date d'inscription
mardi 18 février 2003
Statut
Membre
Dernière intervention
29 juin 2004

merci bcp les gars CA MARCHE
il faut dire que j ai laissé me filer le C++
return(0);)