modification d'une matrice dans une procedure - C - Programmation
Marsh Posté le 19-09-2008 à 19:23:15
le code de la pocedure est :
void push_m(int & nivel, float matrix[10][3][3])
{
int i,j;
nivel=nivel+1;
for (i=0;i<3;i++)
{
for(j=0;j<3;j++) matrix[nivel][i][j]=matrix[nivel-1][i][j];
}
}
et l'appel a la procedure est :
int main(){
float pila[10][3][3];
int estado;
int i,j;
for (i=0;i<3;i++){
for(j=0;j<3;j++){
if(i==j) pila[0][i][j]=1;
else pila[0][i][j]=0;
}
}
push_m(estado,pila);
return 0;
}
Mais je ne pense que le probleme se situe au niveau du passage des parametres, enfin, c'est juste ce que je pense.
Marsh Posté le 19-09-2008 à 19:57:08
Hmm, c'est moi ou ta variable 'estado' n'est pas initialisée au moment où tu appelles "push_m" ?
Marsh Posté le 19-09-2008 à 22:14:16
le probleme ne vient pas de la, ceci est juste la partie du code qui ne marche pas , la variable estado est initialis'e a ce moment.
Ce que je ne comprend pas, c que la variable estado subit la modification, et la guarde, mais la matrice non, la procedure n'arrive pas a renvoyer la version modifiée.
Marsh Posté le 19-09-2008 à 22:46:59
deja c'ets du melange infame C/C++ ... ta variable est modifié à travers l'appel de fonction car tu passes une référence à cette dernière alors que ton immonde tableau est copié. Utilise boost::multi_array pour faire ça
Marsh Posté le 20-09-2008 à 13:49:43
Joel F a écrit : ...alors que ton immonde tableau est copié. |
Euh non, il passe le nom du tableau donc c'est une adresse qui est reçue par la fonction (pfff je fais plus de C depuis un an alors suis un peu rouillé mais c'est quand-même bien ce qu'il me semble)
caliban47 a écrit : le code de la pocedure est : |
Pfff... venir poster un code C++ dans un forum C
Code :
|
Maintenant, étant donné que "estado" et "pila" semblent liés l'un à l'autre, l'intelligence voudrait qu'ils soient liés réellement via une structure. Ah évidemment ça demande une certaine remise en question mais quel putain de gain de temps par la suite !!!
Code :
|
Marsh Posté le 20-09-2008 à 15:30:23
Sve@r a écrit : |
Peut-etre, anyway c'etait pas du C
Marsh Posté le 19-09-2008 à 18:43:23
Je suis en train de faire un programme pour lequel j'ai besoin d'une procedure qui va modifier une matrice a 3 dimension. Je l'ai declare comme ca:
void Push (float matrice[4][3][3])
{ // programme
}
et dans le main j'ai fai l'appel de la procedure comme ca:
Push(matrix);
j'ai bien sur déclaré la matrice avec les bonnes dimensions avant, ca compile sans probleme, mais ca ne modifie pas la matrice. je sais que lorsqu'on passe un paramete int a modifier, il faut utiliser le & , mais avec la matrice ca ne marche pas.
Quelqu'un aurait-il une idée pour m'aider?
je vous remercie