[Langage C] Fonction utilisant tableau

Fermé
Tunaki - Modifié par Tunaki le 3/05/2010 à 17:10
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 - 3 mai 2010 à 17:14
Bonjour à tous ! Je suis en train d'écrire une bête fonction qui calcule le produit de deux matrices mais j'ai un problème assez bizarre.
Voici le code que j'ai :

void produit_matrice(double *A, double *B, double *C, int N, int M, int L){
int i,j,k,res;
for(j=0;j<=L-1;j++){
for(i=0;i<=N-1;i++){
res=0;
for(k=0;k<=M-1;k++){
res=res+A[i+k*N]*B[k+j*M];
printf("res=%g\n",res);
}
C[i+j*N]=res;
exit(0);
}
}
}

int main(void){
int N=2,M=3,L=2;
double A[6],B[6],C[4];
A[0]=0.999;A[1]=1.001;A[2]=2.001;A[3]=0.999;A[4]=-1.001;A[5]=1.001;
B[0]=0.999;B[3]=1.001;B[1]=2.001;B[4]=0.999;B[2]=-1.001;B[5]=1.001;
printf("%g\t%g\t%g\n",A[0],A[2],A[4]);
printf("%g\t%g\t%g\n",A[1],A[3],A[5]);
printf("\n");
printf("%g\t%g\n",B[0],B[3]);
printf("%g\t%g\n",B[1],B[4]);
printf("%g\t%g\n",B[2],B[5]);
printf("\n");
produit_matrice(A,B,C,N,M,L);
printf("%g\t%g\n",C[0],C[2]);
printf("%g\t%g\n",C[1],C[3]);
return 0;
}

J'ai mis le exit(0) puisque ça ne marche pas avant d'arriver là. Il me sort bien 3 valeurs de res mais les 3 valent -1.001 selon lui, alors que c'est faux !
(le premier res devrait valoir A[0]*B[0]=0.999*0.999)
Le pire dans tout ça, et c'est là que je ne comprends plus rien, si je demande à afficher A[0] et B[0] avant le boucle sur k, et bien, le premier res devient bien 0.999 !!!!

Si vous avez une idée, je vous en serai reconnaissant !

EDIT : En fait le problème est plus grave que cela. Je viens de me rendre compte que si je demande à afficher res juste après avoir déclaré res=0, il m'affiche res=-1.001......
A voir également:

1 réponse

EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 318
3 mai 2010 à 17:14
Un void ne renvoit rien donc pas besoin de mettre un return. C'est d'ailleurs très bizarre.
0

Discussions similaires