Matrice 3D
Idonnow
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai un projet pour lequel j'ai besoin de passer une matrice 3 dimensions à une fonction.
Je programme sur un PIC 32 car il y a une application derrière.
Je n'arrive pas à envoyer ma matrice à ma fonction, le compilateur me dis à chaque fois
Est ce que quelqu'un aurais la solution à mon problème?
Voici mon code:
main :
fonction :
merci d'avance pour l'aide apportée.
Idonnow
J'ai un projet pour lequel j'ai besoin de passer une matrice 3 dimensions à une fonction.
Je programme sur un PIC 32 car il y a une application derrière.
Je n'arrive pas à envoyer ma matrice à ma fonction, le compilateur me dis à chaque fois
error: subscripted value is neither array nor pointer
Est ce que quelqu'un aurais la solution à mon problème?
Voici mon code:
main :
int main (void) { char x,y,z; int matrice[][5][7]; for(z=0; z<=4; z++) { for(y=0; y<=5;y++) { for (x=0;x<=7;x++) matrice[z][y][x]=0; } } matrice[0][0][5]=1; Init_micro(); while (1) { Afichage_tableau(matrice); }
fonction :
void Afichage_tableau (int *matrice) { int tab_matrice[5][32],w=0; int i,j,x=7,y=5,z=16,Trame=0; for (i=18;i > 0 ; i--) { for (j=32; j>0 ; j--) { if(x > 0) { x=7; y--; if(y > 0) { y=5; z--; } } w = *matrice[z][y][x]; tab_matrice[i][j]= w; Trame = Trame | (tab_matrice[i][j] << j); x--; } envoi_trame(Trame); } PORTE = PORTE | ((1 << VALA) | (1 << VALB) | (1 << VALC) | (1 << VALD)); }
merci d'avance pour l'aide apportée.
Idonnow
A voir également:
- Matrice 3D
- Architecte 3d gratuit - Télécharger - Architecture & Déco
- 3d slash - Télécharger - 3D
- Smartshow 3d - Télécharger - Visionnage & Diaporama
- Paint 3d mac - Télécharger - Dessin & Illustration
- Google maps satellite 3d - Guide
3 réponses
Il manque la première dimension à ton tableau.
Et attention à tes for. Il faut mettre inferieur strictement.
Et attention à tes for. Il faut mettre inferieur strictement.
J'ai enlevé la première dimension parce que j'ai fais des test :-). Ensuite le code dans les for dans la fonction, je suis d'accord, est faux; je l'ai d'ailleurs changé et refondu en entier. Mais le réel problème se trouve dans l'envoi, la réception et l'utilisation de la matrice 3 dimensions. J'ai parcouru un certain nombre de site et je n'ai trouvé aucun site qui répond à ma question :-/
J'ai enlevé la première dimension parce que j'ai fais des test :-).
Il n'empêche que c'est faux !
int matrice[][5][7];
Soit tu fais : int matrice[5][7] (version où tu enlèves la première dimension), soit tu fais int matrice[4][5][7]; mais pas ce que tu as fait.
Donc corrige, reposte ton code en mettant le nouveau message d'erreur.
Il n'empêche que c'est faux !
int matrice[][5][7];
Soit tu fais : int matrice[5][7] (version où tu enlèves la première dimension), soit tu fais int matrice[4][5][7]; mais pas ce que tu as fait.
Donc corrige, reposte ton code en mettant le nouveau message d'erreur.
J'ai pas mon code ,en se moment ,avec moi mais je t'assure avec ou sans il n'y a rien qui change entre les deux .
Normal, il y a plein d'autres erreurs. Mais il faut commencer par corriger petit à petit.
void Afichage_tableau (int *matrice)
Tu mets int *matrice, il faudrait mettre : int matrice[NBLIG][NBCOL] (si t'es en 2 dim).
w = *matrice[z][y][x];
w=matrice[y][x];
for (x=0;x<=7;x++) matrice[z][y][x]=0;
Matrice doit être de 2 dimensions puisque c'est ton test. x<=7, à corriger comme dit plus haut.
Voilà, mais il faut corriger tout ça, recompiler pour voir s'il reste des erreurs. Reposte après avoir corrigé et mets le(s) message(s) d'erreur s'il en reste.
void Afichage_tableau (int *matrice)
Tu mets int *matrice, il faudrait mettre : int matrice[NBLIG][NBCOL] (si t'es en 2 dim).
w = *matrice[z][y][x];
w=matrice[y][x];
for (x=0;x<=7;x++) matrice[z][y][x]=0;
Matrice doit être de 2 dimensions puisque c'est ton test. x<=7, à corriger comme dit plus haut.
Voilà, mais il faut corriger tout ça, recompiler pour voir s'il reste des erreurs. Reposte après avoir corrigé et mets le(s) message(s) d'erreur s'il en reste.