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 :
Ensuite je dois effectuer une opération de calcul et afficher les résulats sur l’écran.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Voici le code que j’ai fait.
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à
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); }
Quelqu’un pourrait-il m’aider ?
Merci.
Partager