Problème de lecture fichier
Bonjour,
J’ai besoin d’écrire un programme en c permettant de lire un fichier .txt. Les données dans le fichier sont présentées à l’intérieur sont présentées de la manière suivante :
Code:
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
|
0 0 0
1 -90.618 299.859
2 -480.287 -366.363
3 -106.647 -202.037
4 -134.373 -364.665
5 -196.116 -43.097
6 455.724 -383.012
7 -232.731 -467.685
8 -138.385 -61.276
9 247.014 -461.857
10 74.257 373.238
11 -95.265 164.968
12 -211.651 -147.830
13 -265.178 499.830
14 -126.376 330.654
15 -267.075 499.830
16 -486.620 56.890
17 -368.762 -466.753
18 66.033 -456.440
19 234.876 57.177
20 22.466 -236.939
21 349.490 -205.735
22 302.043 -70.028
23 23.194 432.094
24 384.468 11.208 |
Ensuite je dois effectuer une opération de calcul et afficher les résulats sur l’écran.
Voici le code que j’ai fait.
Code:
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
| #include<stdio.h>
#include <stdlib.h>
#include <math.h>
typedef struct
{
int x; //abscisse
int y; //ordonnée
}Client;
Client donnees_clients[24];
int main()
{
FILE *file = NULL;
int i, j;
double distance[24][24];
if((file = fopen("D:\\calcul_distance_euclidienne\\calcul_distance_euclidienne\\donnees.txt", "r")) == NULL)/*ouverture du fichier en lecture*/
printf("Error: impossible d'ouvrir fichier donnees.txt\n");
else//non
{
while(fgetc(file)!='\n');
for(i=0;i<24;i++)
{
j=fscanf(file,"%i %i %i\n",&i,&donnees_clients[i].x,&donnees_clients[i].y);
if(j==EOF)
{
printf("fin de fichier !\n");
break;
}
printf("donnees_clients[%i]\n\tx=%i\n\ty=%i\n", i, donnees_clients[i].x,donnees_clients[i].y);
}
for(i=0; i<24; i++)
{
for(j=0;j<i+1;j++)
{
if(i==j)
{
distance [i][j]= 0;
}
else
{
for(i=0; i<24; i++)
{
for(j=0;j<i+1;j++)
{
distance [i][j] = distance [j][i];
distance[i][j]= sqrt((donnees_clients[i].x - donnees_clients[j].x)*(donnees_clients[i].x - donnees_clients[j].x)+(donnees_clients[i].y - donnees_clients[j].y)*(donnees_clients[i].y - donnees_clients[j].y));
}
}
}
}
}
for(i=0; i<24; i++)
{
for(j=0;j<24;j++)
{
printf("distance[%i][%i] = %4.2lf\n\n ",i, j, distance[i][j]);
}
}
fclose(file);
printf("\n fin de lecture\n");
}
getchar();
return(0);
} |
Le programme se compile. Toutefois, il ne donne pas les bons résultats. Je crois que lors de l'écriture il lit que la première ligne et le premier caractére. Il ne passe pas au caractère suivant pour le lire. Je ne parviens pas à corriger celà:cry:
Quelqu’un pourrait-il m’aider ?
Merci.