Bonjour à tous,
[/CODE]
J'ai créer une fonction trés banale permettant de calculer la distance entre 2 points:
Le 3eme et 4eme parametres sont deux tableaux dynamiques de dimension 2 déterminées dans la fonction main.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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:
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 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); }
e l'appel de ma fonction est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 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); }
Merci pour votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 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]); } }
Partager