Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1582 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] Utilisation des pointeurs pour tableau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Utilisation des pointeurs pour tableau

n°101016
dvincent
Posté le 15-02-2002 à 17:19:08  profilanswer
 

Salut !
 
J'ai besoin d'un petit coup de main.
je dois me créer un tableau d'éléments qui ne sont pas définis au depart puisque passés en paramètre de mon constructeur.
les paramètres passés sont X et Y definissant le nombre d'élements à afficher sur une grille en X et Y (pour faire un damier de dalles)
je dois donc créé un tableau de X*Y éléments et donc ils ne peuvent donc être créé statiquement. pour ensuite appelé mon constructeur de dalles
 
Merci de votre aide.

mood
Publicité
Posté le 15-02-2002 à 17:19:08  profilanswer
 

n°101070
bjbebert
Posté le 15-02-2002 à 19:33:09  profilanswer
 

Tu peux créer un tableau de tableaux : Element**, c'est à dire un tableau de X pointeurs, eux même pointant sur des tableaux de Y éléments.
Le plus simple serait peut être de créer un tableau de X*Y élements. Tu accèdes à un élément (x, y) par Elements[Y*y + x]

n°101072
dvincent
Posté le 15-02-2002 à 19:41:13  profilanswer
 

Je viens de tenter ceci :
-------
int *totaldalle = new int;
*totaldalle=(nbdalleX*nbdalleY);
int tdalle[*totaldalle]; // Creation d'un tableau de dalle
 for(int y=0;y<nbdalleY;y++)
 {
  for(int x=0;x<nbdalleX;x++)
  {
  // Appel de dalle : Envoie la position de la dalle dans l'espace et sa couleur
  cout << "Construction de la dalle : " << x <<","<<y << endl;
//  dalle tdalle[numdalle](0,0,0);
  }
 }
---------
Mais ,j'obtiens pour le int tdalle[*totaldalle] :  
error C2057: expected constant expression
error C2466: cannot allocate an array of constant size 0
error C2133: 'tdalle' : unknown size
 

bjbebert a écrit a écrit :

Tu peux créer un tableau de tableaux : Element**, c'est à dire un tableau de X pointeurs, eux même pointant sur des tableaux de Y éléments.
Le plus simple serait peut être de créer un tableau de X*Y élements. Tu accèdes à un élément (x, y) par Elements[Y*y + x]  



n°101079
Krueger
tout salaire demande dutravail
Posté le 15-02-2002 à 21:17:15  profilanswer
 

Code :
  1. int *totaldalle = new int;
  2. *totaldalle     = (nbdalleX * nbdalleY);
  3. int *tdalle     = new int[*totaldalle]; // Creation d'un tableau de dalle
  4. for(int y = 0; y < nbdalleY; y++)
  5. {
  6.   for(int x = 0; x < nbdalleX; x++)
  7.   {
  8.     // Appel de dalle : Envoie la position de la dalle dans l'espace et sa couleur
  9.     cout << "Construction de la dalle : " << x << "," << y << endl;
  10.     dalle tdalle[y * nbdalleY + x] = 0;
  11.   }
  12. }


Ça, c'est pour un tableau d'entiers.

 

[jfdsdjhfuetppo]--Message édité par Krueger--[/jfdsdjhfuetppo]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°101099
bjbebert
Posté le 15-02-2002 à 23:00:51  profilanswer
 

dvincent a écrit a écrit :

int *totaldalle = new int;
*totaldalle=(nbdalleX*nbdalleY);
int tdalle[*totaldalle]; // Creation d'un tableau de dalle



Ca marche pas, ca. Pour déclarer un tableau avec un espace deja alloué, faut que le compilateur puisse déterminer la taille dès la compilation. Ca n'est pas le cas ici.

n°101313
Krueger
tout salaire demande dutravail
Posté le 16-02-2002 à 20:55:04  profilanswer
 

Ben je sais pas trop, mais il devrait y avoir un moyen de déclarer un tableau de taille variable (avec l'opérateur new) plus ou moins de cette façon. Reste à voir la syntaxe exacte, je ne m'en souviens plus trop. :sweat:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°101319
bjbebert
Posté le 16-02-2002 à 21:08:58  profilanswer
 

C'est pas pour les objets le new.
Ici, je dirais plutot un malloc.

n°101392
gilou
Modérateur
Modzilla
Posté le 17-02-2002 à 09:44:21  profilanswer
 

bjbebert a écrit a écrit :

C'est pas pour les objets le new.Ici, je dirais plutot un malloc.  




 [:purljam]  [:purljam]  [:purljam] On aura tout lu ici.
Parce que malloc, c'est bien connu, ca appelle les constructeurs.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°101405
Slyde
Lizard of the Coast
Posté le 17-02-2002 à 11:26:10  profilanswer
 

Quelqu'un à une soluce pour ce problème de déclaration de tableau avec une variable et du coup blocage du compilo ? j'ai le même pb, une soluce m'interesse :D


---------------
Le topic du QLRR et FIRE - Knowledge is power. Power corrupts. Study hard, become evil.
n°101454
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 17-02-2002 à 15:38:23  profilanswer
 

Ca semble tellement evident mais j'ai peut être pas compris la question. Perso, j'aurai fait ça :
 

Code :
  1. int largeur = 10;
  2. int hauteur = 20;  // un damier de 10 dalles sur 20 dalles
  3. // mon tableau 2D de ptr de dalle :
  4. Dalle*** tDalle = new (Dalle**)[largeur];
  5. for(int x=0; x<largeur; x++) {
  6.    tDalle[x] = new (Dalle*)[hauteur];
  7.    for(int y=0; y<hauteur; y++)
  8.       tDalle[x][y] = new Dalle(0,0,0);
  9. }
  10. // etc... le chemin inverse pour le delete


 
A ce propos, malloc est proscrit en C++


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
mood
Publicité
Posté le 17-02-2002 à 15:38:23  profilanswer
 

n°101473
Slyde
Lizard of the Coast
Posté le 17-02-2002 à 16:44:01  profilanswer
 

J'ai trop du mal à me représenter ce qu'est un Dalle*** :D


---------------
Le topic du QLRR et FIRE - Knowledge is power. Power corrupts. Study hard, become evil.
n°101474
Slyde
Lizard of the Coast
Posté le 17-02-2002 à 16:46:54  profilanswer
 

ah si ca y est je vois.
 
Le problème c'est que je crois que ce sera même problème pour dvincent puisque c'est le même principe : on passe une var en taille du tableau et apparament ca ne plait pas à son compilo. Essaie avec un const devant :??:


---------------
Le topic du QLRR et FIRE - Knowledge is power. Power corrupts. Study hard, become evil.
n°101485
bjbebert
Posté le 17-02-2002 à 17:31:04  profilanswer
 

gilou a écrit a écrit :

 
 [:purljam]  [:purljam]  [:purljam] On aura tout lu ici.
Parce que malloc, c'est bien connu, ca appelle les constructeurs.
A+,  



Qui a parlé d'objets ?? Pour moi, c'est juste un tableau de structures.
 
Edit : c bon, j'ai compris. J'ai oublié le ? à la fin de la première phrase. En fait, on est d'accord.

 

[jfdsdjhfuetppo]--Message édité par bjbebert--[/jfdsdjhfuetppo]

n°101487
Da True Cl​ouseau
It&#039;s good to be true
Posté le 17-02-2002 à 17:35:56  profilanswer
 

bjbebert a écrit a écrit :

Qui a parlé d'objets ?? Pour moi, c'est juste un tableau de structures.
 




En c++, une structure est une classe, elle a notamment un constructeur par défaut.

n°101493
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 17-02-2002 à 17:59:06  profilanswer
 

slyde a écrit a écrit :

ah si ca y est je vois.
 
Le problème c'est que je crois que ce sera même problème pour dvincent puisque c'est le même principe : on passe une var en taille du tableau et apparament ca ne plait pas à son compilo. Essaie avec un const devant :??:  




 
C'est la seule manière. Si son compilo ne l'accepte pas c'est qu'il n'est pas ANSI.

n°101495
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 17-02-2002 à 18:01:47  profilanswer
 

slyde a écrit a écrit :

J'ai trop du mal à me représenter ce qu'est un Dalle*** :D  




 
Ben c'est un pointeur vers un pointeur vers un pointeur d'un objet Dalle. T'as jamais vu de pointeurs ?  :??:  :??:  :??:  :??:

n°101528
Slyde
Lizard of the Coast
Posté le 17-02-2002 à 19:59:05  profilanswer
 

tetragrammaton IHVH a écrit a écrit :

 
 
Ben c'est un pointeur vers un pointeur vers un pointeur d'un objet Dalle. T'as jamais vu de pointeurs ?  :??:  :??:  :??:  :??:  




 
si (malheureusement je serais content si je pouvais tjrs faire du passage par référence :D), mais mon cerveau gère mal d'une traite les 3 * d'un coup, ca me prends plusieurs secondes avant de capter :lol:
 
Question d'habitude je suppose...
 
Sinon VC++ 6 n'est pas AINSI alors :D


---------------
Le topic du QLRR et FIRE - Knowledge is power. Power corrupts. Study hard, become evil.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Utilisation des pointeurs pour tableau

 

Sujets relatifs
Help pour un probleme de pointeurs en C[ADA] Pointeurs...
[ Javascript ] Erreur tableau indéfini ?[PHP] Utilisation classe FPDF
Utilisation d'un port serie et parallele (debutant)[HTML] comment on centre du texte verticalemenrt ds un tableau ?
[c] probleme de tableau a 2 dimensions passee en parametre de fonctionHTML : comment fixer la largeur d'un tableau?
[PHP] histoire de tableau et de explodeVB - Création d'un tableau
Plus de sujets relatifs à : [C++] Utilisation des pointeurs pour tableau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR