Bonjour à tous,
J'ai créer une fonction trés banale permettant de calculer la distance entre 2 points:
Code:
1
2
3
4
5
6
7
8
9
10
11
12 float calcul_distance(int a, int b, float **tableau, float **tableau_cluster) { float d,abs,ord; abs = (tableau[a][0] - tableau_cluster[b][0]); ord = (tableau[a][1] - tableau_cluster[b][1]); printf("\n %.1f, %.1f",abs,ord); d = sqrt(carre(abs) + carre(ord)); return d; }
Le 3eme et 4eme parametres sont deux tableaux dynamiques de dimension 2 déterminées dans la fonction main.
Le probléme est que lorsque j'arrive dans la fonction, ces deux tableaux ne sont plus connus, ce qui me donne un Segfault et je ne comprend pas pourquoi.
Même si je n'ai aucun doute sur la déclaration dynamique de mes deux tableaux, je prefere afficher ce que j'ai fait, on ne sait jamais:
etCode:
1
2
3
4
5
6 float **travail.point_utilisateur; travail.point_utilisateur = malloc(sizeof(float*)*n); for (i = 0; i < n; ++i) { travail.point_utilisateur[i] = malloc(sizeof(float)*2); }
et l'appel de ma fonction est le suivant:Code:
1
2
3
4
5 float **travail.points_Clusters ; travail.points_Clusters = malloc(sizeof(float*)*k); for (i = 0; i < n; ++i) { travail.points_Clusters[i] = malloc(sizeof(float)*2); }
Code:
1
2
3
4
5
6
7
8
9
10
11 travail.distance = malloc(sizeof(float*)*n); for (i = 0; i < n; ++i) { travail.distance[i] = malloc(sizeof(float)*k); } for (u=0;u<k;u++) { for (v=0;v<n;v++) { travail.distance[v][u] = calcul_distance(v,u,travail.point_utilisateur,travail.points_Clusters); printf("\nDistance du point %d au Cluster %d = %.1f",v+1,u+1,travail.distance[v][u]); } }
Merci pour votre aide.