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

cs_azkab Messages postés 22 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 juin 2004 - 8 juin 2004 à 14:17
cs_azkab Messages postés 22 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 juin 2004 - 8 juin 2004 à 15:10
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

shirah3i Messages postés 24 Date d'inscription mercredi 31 mars 2004 Statut Membre Dernière intervention 10 juin 2004
8 juin 2004 à 14:48
au lieu de "int coordinates[n]" essaye avec:
int* coordinates = (int*)malloc(n * sizeof(int) );
@+
SHIRAH
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 13
8 juin 2004 à 14:54
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;
0
cs_azkab Messages postés 22 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 29 juin 2004
8 juin 2004 à 15:10
merci bcp les gars CA MARCHE
il faut dire que j ai laissé me filer le C++
return(0);)
0
Rejoignez-nous