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

  FORUM HardWare.fr
  Programmation
  C

  Initialisation d'un tableau à deux dimensions de structure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Initialisation d'un tableau à deux dimensions de structure

n°524565
chaica
Posté le 27-09-2003 à 15:15:35  profilanswer
 

Salut!
 
j'ai la structure suivante :

Code :
  1. typedef struct carre {
  2.  int etatCarre;
  3.  int idCarre;
  4.  int idFigure;
  5. }carre;


 
J'ai le tableau à deux dimensions suivant :

Code :
  1. carre figConteneur[NBFIGURES][NBCARRESFIG];


 
Et je veux initialiser l'ensemble des champs etatCarre avec des defines de ce type:

Code :
  1. #define FIG1 0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0
  2. #define FIG2 0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,0
  3. ...


 
Alors pour l'instant je fais ça:

Code :
  1. carre figConteneur[NBFIGURES][NBCARRESFIG] =  { {FIG1}, {FIG2}, {FIG3}, {FIG4}, {FIG5}, {FIG6}, {FIG7} };


 
Mais j'ai le message suivant à la compilation :

Code :
  1. main.c: In function `main':
  2. main.c:19: warning: missing braces around initializer
  3. main.c:19: warning: (near initialization for `figConteneur[0][0]')


 
Si vous avez une idée ca m'intéresse bien :D

mood
Publicité
Posté le 27-09-2003 à 15:15:35  profilanswer
 

n°524610
kfman
Credo quia absurdum
Posté le 27-09-2003 à 16:24:41  profilanswer
 

Fais peter ton code et dis nous dans quel contexte ton prog est utilisé :)

n°524613
kfman
Credo quia absurdum
Posté le 27-09-2003 à 16:32:53  profilanswer
 

Normalement tu dois accéder à tes champs de cette manière:
 
Lors de l'affectation il ne faut pas mettre de type devant, vu que tu as déclaré figConteneur avant.
 
Ensuite tu dois accéder à tes champs avec une ligne du style:
 
figConteneur[x][y].etatCarre = val
 
et de même pour idCarre et idFigure.

n°524614
Taz
bisounours-codeur
Posté le 27-09-2003 à 16:38:08  profilanswer
 

ben dans es #define, faut faire les regroupements 3 par 3. et apres je te conseille de faire une initilisation etape par étape plutot que tout d'un coup dans une {} qui prends tous les éléments (absolument imbbitable ton truc, heureusmeent que t'as mis des des #, sinon, on aurait pu comprends ton code du premier coup et tu aurais toi meme compris le problème

n°524616
Taz
bisounours-codeur
Posté le 27-09-2003 à 16:41:24  profilanswer
 

struct dawa
{
        int a, b, c;
};
 
struct dawa tab[][2] = {
        { {1, 2, 3}, {4, 5, 6} },
        { {7, 8, 9}, {10, 11, 12} }
        };

n°524630
chaica
Posté le 27-09-2003 à 17:04:32  profilanswer
 

Taz a écrit :

struct dawa
{
        int a, b, c;
};
 
struct dawa tab[][2] = {
        { {1, 2, 3}, {4, 5, 6} },
        { {7, 8, 9}, {10, 11, 12} }
        };


 
Je suis d'accord avec ce que tu écris mais :
 
1. Les valeurs dans le #define sont celles du premier champ (etatCarre) pour l'ensemble des carres d'une ligne de figConteneur[NBFIGURES][NBCARRESFIG] (sachant que
NBFIGURES = 7 et NBCARRESFIG=16 j'ai oublié de le préciser).
 
en exemple #define FIG1 contient l'ensemble des valeurs du champ etatCarre pour figConteneur[0][0à15]
 
Je suis peut être pas très clair. C'est sûr que je peux faire une fonction pour faire ça avec des boucles mais si ca avait pu se faire à l'initialisation ça aurait été plus simple pour des modifs ultérieures, comme rajouter des figures.
Mais je cherche peut être trop compliqué.

n°524639
Taz
bisounours-codeur
Posté le 27-09-2003 à 17:17:50  profilanswer
 

et ? ton problème, c'est juste de la synthaxe .|

n°524642
chaica
Posté le 27-09-2003 à 17:23:08  profilanswer
 

Taz a écrit :

et ? ton problème, c'est juste de la synthaxe .|


 
Si je reprends ton exemple:
 

Code :
  1. struct dawa tab[][2] = {
  2.        { {1, 2, 3}, {4, 5, 6} },
  3.        { {7, 8, 9}, {10, 11, 12} }
  4.        };


 
Moi mon #define représente le 1, le 4, le 7 et le 10. Et je ne sais donc pas comment lui indiquer ca syntaxiquement.

n°524645
Taz
bisounours-codeur
Posté le 27-09-2003 à 17:36:00  profilanswer
 

tu travailles avec quelle norme ?

n°524647
chaica
Posté le 27-09-2003 à 17:36:57  profilanswer
 

heu... je compile en -Wall -ansi -pedantic c'est tout ce que je peux dire.

mood
Publicité
Posté le 27-09-2003 à 17:36:57  profilanswer
 

n°524649
Taz
bisounours-codeur
Posté le 27-09-2003 à 17:44:52  profilanswer
 

ben donc en ANSI, t'as pas de solutions : si tu initialisez, tu dois tout initialiser.


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

  Initialisation d'un tableau à deux dimensions de structure

 

Sujets relatifs
[HTML/js] Probleme de positionnement avec un tableauregrouper les valeur en double d'un même tableau...
[autorun] lancer une page html dans une fenêtre aux dimensions vouluesLe menu deroulant double la hauteur de ligne de mon tableau
Pb pour positionner un tableau au sommetRecherche de motif dans un tableau 2d
[ANSI - C] Mettre dans un tableau 2 dimensionsTableau d objet, creation dobjet commetn faire dans ce cas :
tableau et débordement de texte 
Plus de sujets relatifs à : Initialisation d'un tableau à deux dimensions de structure


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