Bonjour,
C'est encore moi !
J'ai cherché à faire la somme de deux matrices en C.
J'ai implanté l'algorithme sous MPLAB pour la somme de deux matrices d'entiers et ça fonctionne ! (valeurs vérifié par le WATCH)
Pour ce faire, j'ai utilisé les pointeurs.
Selon ce site (lien ici), une matrice mat[NB_Lignes][NB_COLONNES ] est équivalente à *(matrice + (NB_COLONNES * ligne) + colonne).
J'ai donc utilisé ce principe.
Je désire faire la somme de deux matrices de float ou double : ça ne fonctionne pas.
Pourtant l'algorithme est exactement le même, j'ai juste remplacé "int" par "double".
Voici l'algorithme avec les int qui fonctionne :
J'obtiens resultat[2][2]={{3,3},{47,36}}Code:#include <18F45K20.h> void addi(int **tab1,int **tab2, int **res){ int i=0; int j=0; int k=0; for(i=0;i<2;i++){ for(j=0;j<2;j++){ *(res+(1*i)+j)=*(tab1+(1*i)+j)+*(tab2+(1*i)+j); } } } int t1[2][2]={{2,3},{47,35}}; int t2[2][2]={{1,0},{0,1}}; int resultat[2][2]; void main() { addi(t1,t2,resultat); while(1); }
Pour le deuxième code :
Code:#include <18F45K20.h> void addi(double **tab1,double **tab2, double **res){ int i=0; int j=0; int k=0; for(i=0;i<2;i++){ for(j=0;j<2;j++){ *(res+(1*i)+j)=*(tab1+(1*i)+j)+*(tab2+(1*i)+j); } } } double t1[2][2]={{2.2,3.4},{47.2,35.7}}; double t2[2][2]={{1.0,0.0},{0.0,1.0}}; double resultat[2][2]={0.0}; void main() { addi(t1,t2,resultat); while(1); }
J'obtiens resultat[2][2]={{3.2,3.4},{47.0,0.0}}
C'est la deuxieme ligne qui pose problème. Je ne sais pas comment agir car pour des int cela fonctionne parfaitement.
Est ce un problème avec MPLAB ? (je suis sous MPLAB 8.92)
J'aimerais vraiment pouvoir résoudre ce problème et obtenir la somme de deux double ou float correcte (je suis ouvert à d'autres méthodes s'il le faut).
Merci pour votre aide
-----