Variable semble changer seule ?!

Fermé
vincemeister514 - 18 août 2014 à 03:56
sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 - 19 août 2014 à 16:22
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.
A voir également:

1 réponse

sambia39 Messages postés 610 Date d'inscription vendredi 31 juillet 2009 Statut Membre Dernière intervention 9 février 2023 49
19 août 2014 à 16:22
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