probleme de tableau a 2 dimensions passee en parametre de fonction [c] - Programmation
Marsh Posté le 10-02-2002 à 23:54:09
Il faut que m1+1 soit évalué à la compilation pour pouvoir étre utilisé. Dans ton cas tu ne peux rien faire. 
 
Tout ce qui te reste c'est de passé un pointeur à la place de ton tableau et de faire les calculs à la main. 
 
Ta fonction devient : 
   int resol_etha(int m1, int lx, double * matrice_cos, double a0[], double etha1[]) 
 
Et dans cette fonction tu fais : 
*(matrice_cos+x+y*m1) au lieux de matrice_cos[x][y] 
 
Enfin pour appeler resol_etha, tu n'as rien à changer normalement, mais plus proprement il faudrait faire : 
 
resol_etha(m1, lx, & matrice_cos[0][0], a0, etha1); 
Marsh Posté le 11-02-2002 à 14:03:14
| Kristoph a écrit a écrit  : Il faut que m1+1 soit évalué à la compilation pour pouvoir étre utilisé. Dans ton cas tu ne peux rien faire. Tout ce qui te reste c'est de passé un pointeur à la place de ton tableau et de faire les calculs à la main. Ta fonction devient : int resol_etha(int m1, int lx, double * matrice_cos, double a0[], double etha1[]) Et dans cette fonction tu fais : *(matrice_cos+x+y*m1) au lieux de matrice_cos[x][y] Enfin pour appeler resol_etha, tu n'as rien à changer normalement, mais plus proprement il faudrait faire : resol_etha(m1, lx, & matrice_cos[0][0], a0, etha1); | 
 
generalement on fait une macro pour eviter de se tromper  
"define mat(matrice,m1,x,y) *((matrice)+(x)+(y)*(m1)) 
Marsh Posté le 10-02-2002 à 23:45:16
Bonsoir...
J'ai une erreur dans la compilation d'un prog... l'erreur vient d'un parametre d'une fonction mais je ne sais pas pourquoi :-(
int resol_etha(int m1, int lx, double matrice_cos[][m1+1], double a0[], double etha1[])
il n'accepte pas le matrice_cos[][m1+1], mais accepte matrice_cos[][66]. Pourtant m1 est bien declare avant...
si qq peut m'aider ?!
[jfdsdjhfuetppo]--Message édité par Psychee--[/jfdsdjhfuetppo]