[C] tableau à dimension, où est le bug ?

tableau à dimension, où est le bug ? [C] - C++ - Programmation

Marsh Posté le 03-12-2002 à 10:22:58    

Bonjour,
 
je compile ce code avec gcc :
 

Code :
  1. int main()
  2. {
  3. int a[5, 3], i, j;
  4. a[0, 0] = 3;
  5. a[0, 1] = 2;
  6. a[0, 2] = 7;
  7. a[1, 0] = 4;
  8. a[1, 1] = 1;
  9. a[1, 2] = 0;
  10. a[2, 0] = 1;
  11. a[2, 1] = 6;
  12. a[2, 2] = 0;
  13. a[3, 0] = 3;
  14. a[3, 1] = 7;
  15. a[3, 2] = 2;
  16. a[4, 0] = 5;
  17. a[4, 1] = 8;
  18. a[4, 2] = 3;
  19. for (i=0; i<5; i++) {
  20. for (j=0; j<3; j++)
  21.   printf("a[%d, %d]=%d, ", i, j, a[i, j]);
  22. printf("\n" );
  23. }
  24. }


 
et voici ce que j'obtiens :
 

Code :
  1. a[0, 0]=5, a[0, 1]=8, a[0, 2]=3,
  2. a[1, 0]=5, a[1, 1]=8, a[1, 2]=3,
  3. a[2, 0]=5, a[2, 1]=8, a[2, 2]=3,
  4. a[3, 0]=5, a[3, 1]=8, a[3, 2]=3,
  5. a[4, 0]=5, a[4, 1]=8, a[4, 2]=3,


 
C'est quoi ça encore ???
Vous obtenez quoi vous ?
Et comment remédier à ça ?
 
Et si nécéssaire :
 

Code :
  1. bash-2.05a$ gcc -v
  2. Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
  3. gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)


 
...
 
Merci de votre aide !
 
juju


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
Reply

Marsh Posté le 03-12-2002 à 10:22:58   

Reply

Marsh Posté le 03-12-2002 à 10:28:35    

je savais pas qu'on pouvais faire des tableaux avec [...,...] plutôt que [...][...], c'est dans les normes récentes du C ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 03-12-2002 à 10:34:11    

tu compiles avec l'option -Wall et toutes les reponses te seront offertes ;)

Reply

Marsh Posté le 03-12-2002 à 12:19:11    

antp a écrit a écrit :

je savais pas qu'on pouvais faire des tableaux avec [...,...] plutôt que [...][...], c'est dans les normes récentes du C ? :??:




_fred : -Wall, suis-je bête :) je vais le faire.
antp : avec tous les langages qu'on m'ingurgite, je sais même plus si c'est [x, y] ou [x][y] ... la honte :)
 
Et sinon pour initialiser le tableau à sa création, c'est comment ?
Pour un simple dimension, c'est = {1, 2, 3, ...};, mais pour un à plusieurs ??? là en fait je peux pas tester, et j'ai plus mes livres sur le C, c'est pour ça que je demande !
Merci à vous :)
 
juju


---------------
Du temps à perdre ? -> http://www.juju-le-barbare.fr.fm
Reply

Marsh Posté le 04-12-2002 à 04:13:06    

Oh le piège sournois !
 
En C, l'opérateur virgule évalue son opérande de gauche puis ignore le résultat, ne laissant que celui de droite.
Donc...

Code :
  1. int a[5, 3]; //ignorer le 5...
  2. int a[   3]; //il reste un tableau à 1 dimension !


Faut faire comme ça:

Code :
  1. a[5][3] = {
  2. {3,2,7},
  3. {4,1,0},
  4. {1,6,0},
  5. {3,7,2},
  6. {5,8,3},
  7. };


Chaque accolade ouvrante entre dans un aggrégat (tableau ou structure).


Message édité par Musaran le 05-12-2002 à 02:21:44

---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Marsh Posté le 04-12-2002 à 07:42:04    

juju-le-barbare a écrit a écrit :

Bonjour,
 
je compile ce code avec gcc :
 

Code :
  1. int main()
  2. {
  3. int a[5, 3], i, j;
  4. a[0, 0] = 3;
  5. a[0, 1] = 2;
  6. a[0, 2] = 7;
  7. a[1, 0] = 4;
  8. a[1, 1] = 1;
  9. a[1, 2] = 0;
  10. a[2, 0] = 1;
  11. a[2, 1] = 6;
  12. a[2, 2] = 0;
  13. a[3, 0] = 3;
  14. a[3, 1] = 7;
  15. a[3, 2] = 2;
  16. a[4, 0] = 5;
  17. a[4, 1] = 8;
  18. a[4, 2] = 3;
  19. for (i=0; i<5; i++) {
  20. for (j=0; j<3; j++)
  21.   printf("a[%d, %d]=%d, ", i, j, a[i, j]);
  22. printf("\n" );
  23. }
  24. }


 
et voici ce que j'obtiens :
 

Code :
  1. a[0, 0]=5, a[0, 1]=8, a[0, 2]=3,
  2. a[1, 0]=5, a[1, 1]=8, a[1, 2]=3,
  3. a[2, 0]=5, a[2, 1]=8, a[2, 2]=3,
  4. a[3, 0]=5, a[3, 1]=8, a[3, 2]=3,
  5. a[4, 0]=5, a[4, 1]=8, a[4, 2]=3,


 
C'est quoi ça encore ???
Vous obtenez quoi vous ?
Et comment remédier à ça ?
 
Et si nécéssaire :
 

Code :
  1. bash-2.05a$ gcc -v
  2. Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs
  3. gcc version 2.96 20000731 (Red Hat Linux 7.3 2.96-110)


 
...
 
Merci de votre aide !
 
juju
 




 
sinon t'as pas du code C  :whistle:


---------------
du bon usage de rand [C] / [C++]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed