Bonjour,je vous explique mon problème.J'ai un fichier texte que voici :
Mon but est de faire un tableau de listes qui a la taille du nombre de variables qui sont ici représentés par les points.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 \ \ \ 5\ 18\ \ \ \ \ 11\6 . . \ \ \ \13 . . . \ \ \7 . . \4 . . \ \ \15 . . . \ \ \ \ \ \ \ \ \
J'ai déjà un programme qui calcule le nombre de variables.
Maintenant,je dois donc lire le fichier, je dois donner des valeurs(indices) à mes variables(points).
Et lorsque 2 variables(points)se succèdent comme dans la deuxieme ligne par exemple,je dois chainer la premiere variable(premier point) à la deuxieme et inversement la deuxieme(deuxieme point) a la premiere.
Je schématise pour la premiere ligne :
0->1
1->0
Pour la deuxieme ligne j'aurais:
0->1 //le premier point trouvé(indice 0) dans le fichier est lié au 2eme point(indice 1)
1->0 //l'inverse
//deuxieme ligne
2->3->4 // le 3eme point(indice 2) est lié au 4eme et 5eme point trouvé
3->2->4
4->2->3
.........
.........
.........
nieme point
Les variables(points) sur une meme ligne qui se succèdent
ex: . . .
sont dans une liste.
Voici ce que j'ai fait :
Mon probleme est que je n'arrive pas a généraliser mon code pour n variables et je n'ai pas très bien compris le procéder pour chainer 0 à 1 et en meme temps 1 à 0. C'est un problème d'algo.Merci de m'aider!
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 #include <stdio.h> #include <stdlib.h> void construction_graphe_contraintes(int nombre_variables); typedef struct maillon maillon; struct maillon { maillon *suivant; int indice_maillon; }; typedef maillon*liste; liste tableau_contraintes[nombre_variables]; int main(void) { FILE*grille=fopen("grille.txt","r"); if(grille==NULL) { perror("Erreur lors de l'ouverture de la grille"); return EXIT_FAILURE; } while(!feof(grille) { lecture_ligne(nombre_variables); } } //Contraintes sur les lignes lecture_ligne(int nombre_variables) { char caractere; int indice_tableau=0; int indice_m=0; char tmp; int reste_variable=nombre_variables; tmp=fgetc(grille); while(tmp!="\n") { if(tmp==".") { maillon* tableau_contraintes[nombre_variables]=(maillon*)malloc(sizeof(struct maillon)); maillon*maillon=(maillon*)malloc(sizeof(struct maillon)); maillon->indice_maillon=indice_m; indice_m++; maillon->suivant=NULL; tmp=fgetc(grille); while(tmp==".") { maillon * pointeur=(maillon*)malloc(sizeof(struct maillon)): pointeur=tableau_contraintes[indice_tableau]; maillon* nouveau_maillon=(maillon*)malloc(sizeof(struct maillon)); nouveau_maillon->indice_maillon=indice_m; indice_m++; nouveau_maillon->suivant=NULL; pointeur->suivant=nouveau_maillon; indice_tableau++; pointeur->suivant=maillon; pointeur=nouveau_maillon; } } }
Partager