Bonjour,
J'essaye de comprendre le fonctionnement des pointeurs, des tableaux dynamiques...
J'ai exécuté un code (que j'ai trouvé sur internet et dont j'ai un peu adapté) et je n'arrive pas à comprendre pourquoi il plante
Le code concerne la somme de deux tableaux dynamiques (plutôt des matrices en fait)
Code:#include <stdio.h> #include <stdlib.h> float ** alloueMatrice(int n, int m) { float ** mat = malloc(sizeof(float*) * n); int i; for (i = 0 ; i < n ; i++) mat[i] = malloc(sizeof(float) * m); return mat; } void libereMatrice (float **mat,int n){ int i; for (i = 0 ; i < n ; i++) free (mat[i]); free (mat); } float **addition_mat(float **mat1, float **mat2, int nblignes, int nbcolonnes){ float ** mat3 = alloueMatrice(nblignes,nbcolonnes); int i,j; for (i=0 ; i<nblignes ; i++){ for (j=0 ; j<nbcolonnes ; j++) mat3[i][j] = mat1[i][j] + mat2[i][j]; } return mat3; } int main(int argc, char *argv[]) { float mat1[2][2] = {{1, 10}, {5, 7}}; float mat2[2][2] = {{6, 2}, {14, 18}}; int n1=2; int m1=2; float **mat3 = addition_mat(mat1,mat2,n1,m1); printf ("Somme des deux matrices :\n"); libereMatrice (mat3,n1); mat3 = NULL; system("PAUSE"); return 0; }
Tout me paraît bien défini pourtant (il manque peut être une méthode "afficher" à faire). Je ne vois pas d'erreur de synthaxe ou autre.
Merci pour votre aide
-----