1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| #include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main ()
{
struct ville /*definition d'un type structure nommé ville*/
{
int identifiant;
double abscisse;
double ordonnee;
int demande; /*demande du ville*/
int capacite;
};
struct ville Ville[101]; /* variable de type structure ville*/
double ** distance_entre_ville; /*distance euclidiene entre les ville*/
int i, j;
/*ouverture du fichier de données pour lecture*/
FILE * fichier;
fichier = fopen("D:\\Codes\\TS2004t3\\n100mosA.tsp", "r");
if(fichier == NULL)
{
printf("Impossible d'ouvrir fichier .tsp \n");
exit (-1);
}
/*on commence à lire à la ligne NODE_COORD_SECTION
*/
for (i=0; i<6;i++)
{
if (fscanf(fichier, "%d %lf %lf", &(Ville[i].identifiant), &(Ville[i].abscisse), &(Ville[i].ordonnee)) !=0)
{
printf("Erreur dans le format d'une ligne : ligne %d.\n", i);
exit(-1);
}
}
/*Allocation dynamique du tableau distance*/
if(distance_entre_ville = malloc(101 *sizeof(double))== NULL)
{
printf("erreur lors du malloc sur la taille distance \n");
exit (-1);
}
for (i=0 ; i<101; i++)
if ((distance_entre_ville[i] = malloc (101 * sizeof(double))) == NULL)
{
printf("Erreur lors du malloc sur distance[] ");
exit (-1);
}
for(i=0;i<101;i++)
{
for(j=0;j<i;j++)
{
distance_entre_ville[i][i] = 0.0;
distance_entre_ville[i][j]= distance_entre_ville[j][i]= sqrt(pow((Ville[i].abscisse - Ville[j].abscisse),2.0)+pow((Ville[i].ordonnee - Ville[j].ordonnee),2.0));
}
}
for (i = 0; i < 101; i++)
free(distance_entre_ville[i]);
free(distance_entre_ville);
for(i=0;i<101;i++)
{
for(j=0;j<i;j++)
{
printf("la distance est %f%f", distance_entre_ville[i][j]);
}
}
fclose(fichier);
getchar();
return 0;
} |
Partager