Variable semble changer seule ?!

vincemeister514 -  
sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
J'ai le code suivant :
#include <iostream>
#define POSITION_DATA 1
#define X_AXIS 1
#define Y_AXIS 0

using namespace std;

typedef int dot_coordinates[POSITION_DATA];

void set_coordinates(dot_coordinates* dot,int x, int y);

int main()
{
dot_coordinates dot1,dot2,dot3,dot4;

set_coordinates(&dot1,0,0);
set_coordinates(&dot2,7,0);
set_coordinates(&dot3,0,7);
set_coordinates(&dot4,7,7);

printf("\np1 : x=%d y=%d\n",dot1[X_AXIS],dot1[Y_AXIS]);
printf("\np2 : x=%d y=%d\n",dot2[X_AXIS],dot2[Y_AXIS]);
printf("\np3 : x=%d y=%d\n",dot3[X_AXIS],dot3[Y_AXIS]);
printf("\np4 : x=%d y=%d\n",dot4[X_AXIS],dot4[Y_AXIS]);

return 0;
}

void set_coordinates(dot_coordinates* dot,int x, int y)
{
*dot[X_AXIS] = x;
*dot[Y_AXIS] = y;
}

le retour de la console est ceci :

p1 : x=0 y=7

p2 : x=7 y=0

p3 : x=0 y=7

p4 : x=7 y=7

cela ne devrait-il pas être

p1 : x=0 y=0

p2 : x=7 y=0

p3 : x=0 y=7

p4 : x=7 y=7

?

j'ai beau chercher à bidouiller je ne comprend pas pourquoi le y de p1 est à 7.. je suis certains que c'est une petite erreur stupide mais je n'arrive pas a mettre la main dessus.

merci d'avance.

1 réponse

  1. sambia39 Messages postés 610 Date d'inscription   Statut Membre Dernière intervention   50
     
    Bonjour
    il y a une petite erreur dans ton code sources, tu as oublié l'en-tête
     #include <cstdio> 
    pour l'utilisation de
     printf 
    . Et comme résultat de ton code
    #include <cstdio>
    
    #define POSITION_DATA 1
    #define X_AXIS 1
    #define Y_AXIS 0
    
    
    typedef int dot_coordinates[POSITION_DATA];
    
    void set_coordinates(dot_coordinates* dot,int x, int y){
    	
    	*dot[X_AXIS] = x;
    	*dot[Y_AXIS] = y;
    }
    
    
    int main( void ){
    
    	dot_coordinates dot1,dot2,dot3,dot4;
    
    	set_coordinates(&dot1,0,0);
    	set_coordinates(&dot2,7,0);
    	set_coordinates(&dot3,0,7);
    	set_coordinates(&dot4,7,7);
    
    	printf("\np1 : x=%d y=%d\n",dot1[X_AXIS],dot1[Y_AXIS]);
    	printf("\np2 : x=%d y=%d\n",dot2[X_AXIS],dot2[Y_AXIS]);
    	printf("\np3 : x=%d y=%d\n",dot3[X_AXIS],dot3[Y_AXIS]);
    	printf("\np4 : x=%d y=%d\n",dot4[X_AXIS],dot4[Y_AXIS]);
    	
    		return ( 0 );
    }
    

    j'obtiens ceci


    p1 : x=0 y=0

    p2 : x=7 y=0

    p3 : x=0 y=7

    p4 : x=7 y=7

    Après, je n'ai pas cherché bien loin vue que c'est le résultat que tu souhaite.
    il est préférable également d'utiliser les fonctions du langage C++ , que le langage C et dans ton précédent code c'était pas le cas donc l'en-tête
    #include <iostream>
    et certaine macros comme
     using namespace std; 
    serve pas grand chose à part des ligne en plus.

    à bientôt
    0