[C] Affichage d'un Tableau

Affichage d'un Tableau [C] - C - Programmation

Marsh Posté le 06-08-2008 à 14:11:36    

Franchement, je rencontre là un mystère que je ne suis pas prêt de comprendre.
Explication :
J'ai deux matrices que je déclare bien, que j'initialise bien ...
Je fais appel à ces matrices avec une fonction pour les modifier.
Je fais mes calculs : je les affiche à l'intérieur de la fonction. Tout va bien !
Par contre, dans le main, ce qui est incroyable : c'est que la première n'affiche que la première ligne, la seconde s'affiche entièrement.
Je suis sur le cul !
Etant donné que le code est tentaculaire, je vais poster ici le main et la fonction :  
 

Code :
  1. main(){
  2. // Déclarations  
  3. double A[3][3];
  4. double B[3][3];
  5. int i;
  6. int j;
  7. // Initialisation  
  8. for (i=0;i<=2;i++){
  9.   for (j=0;j<=2;j++) {
  10.     A[i][j] = 0.0;
  11.   }
  12. }
  13. // Pareil pour B ...
  14. for (i=0;i<=2;i++){
  15.   for (j=0;j<=2;j++) {
  16.     B[i][j] = 0.0;
  17.   }
  18. }
  19. Calcul(A,B);
  20. printf("Résultat Main : \n" );
  21. printf(" Matrice A \n" );
  22. for (i=0; i<=2;i++){
  23. printf("%e %e %e \n", A[i][0],A[i][1],A[i][2]);
  24. }
  25. printf(" Matrice B \n" );
  26. for (i=0; i<=2;i++){
  27.   printf("%e %e %e \n", B[i][0],B[i][1],B[i][2]);
  28. }
  29. }


 
Dans un autre fichier ...
 

Code :
  1. Calcul(double A[3][3], double B[3][3]) {
  2. // je fais mes calculs supposons que A est remplie de 1 et B de 2 ...
  3. // J'affiche : le résultat est bon !
  4. }


 
 
Résultat pour le main :
Code : Console
 

Citation :


Résultat Fonction :  
 Matrice A
1 1 1
1 1 1
1 1 1
 Matrice B
2 2 2
2 2 2
2 2 2
==============
Résultat Main :
 Matrice A
1 1 1
 Matrice B
2 2 2
2 2 2
2 2 2


Le compilo me dit rien, pas de segmentation fault ... que dalle !
Autre bizarrerie, la matrice que j'appelle ailleurs, arrive à destination complète et bien remplie : le problème concerne bel et bien l'affichage ...
Qu'est ce que j'ai fais de mâââl ?  
Merci d'avoir lu!


Message édité par LaTex_man le 06-08-2008 à 15:00:11
Reply

Marsh Posté le 06-08-2008 à 14:11:36   

Reply

Marsh Posté le 06-08-2008 à 14:52:57    

Donne un exemple complet reproduisant le probleme.  En virant l'appel a  
Calcul, en ajoutant l'initialisation de B et en corrigeant la typo dans l'initialisation de A (A[i][j] et pas A[i,j], ca compile pas sans de toute facon), je n'ai pas de probleme.

Reply

Marsh Posté le 06-08-2008 à 14:59:04    

Je vais essayer de voir comment je peux reproduire l'exemple en entier...
 
Ps : J'ai corrigé le A[i,j] un vieille habitude de Matlab ...

Reply

Marsh Posté le 06-08-2008 à 17:04:04    

j'ai compilé ton code, en mettant en commentaire la fonction Calcul car je n'ai pas le code , tout est bien affiché. Montre nous le code de Calcul, peut-être l'erreur vient de cette fonction.

Reply

Marsh Posté le 06-08-2008 à 17:48:40    

Salut !
J'ai oublié de répondre sur le forum ! J'ai réinitialisé à nouveau bien comme il faut (à l'aide d'une réponse sur un autre fourm) et effectivement ça remarche.
Par contre, je ne comprends vraiment pas qu'est ce qui a pu se passer : c'est vraiment un mystère ce C.

Reply

Sujets relatifs:

Leave a Replay

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