Commit 4e905f5267f7563af17a35f226d1f86aba20e705

Authored by pvernier
2 parents 6c8b6d76 97749cb4

Merge branch 'master' of https://archives.plil.fr/pvernier/ima3_projet_pa_2019

Showing 3 changed files with 68 additions and 74 deletions   Show diff stats
dico.txt 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +abcde
  2 +fghijkl
  3 +mnopqrs
0 \ No newline at end of file 4 \ No newline at end of file
1 #include <stdio.h> 1 #include <stdio.h>
2 #include <stdlib.h> 2 #include <stdlib.h>
3 3
4 -#define A 26 4 +#define A 27
5 5
6 struct node { 6 struct node {
7 char lettre; 7 char lettre;
@@ -13,111 +13,102 @@ struct cell { @@ -13,111 +13,102 @@ struct cell {
13 struct cell* arbreSuivant; 13 struct cell* arbreSuivant;
14 }; 14 };
15 15
  16 +void lien_listeFils(struct cell** pL) {
  17 + struct cell* p;
  18 + p = malloc(sizeof(struct cell));
  19 +
  20 + (*pL)->arbre->listeFils = p;
  21 +}
  22 +
16 void initialisation_tab_arbre(struct node tab[]) { 23 void initialisation_tab_arbre(struct node tab[]) {
17 -  
18 - for(int i = 0; i < A; i++) { 24 + for(int i = 0; i < A-1; i++) {
19 tab[i].lettre = 97+i; //ajout lettres minuscules 25 tab[i].lettre = 97+i; //ajout lettres minuscules
20 tab[i].listeFils = NULL; 26 tab[i].listeFils = NULL;
21 } 27 }
22 -  
23 - tab[A].lettre = 39;  
24 - tab[A].listeFils = NULL;  
25 - 28 + tab[A-1].lettre = 39;
  29 + tab[A-1].listeFils = NULL;
26 } 30 }
27 31
28 void ajout_tete(char elem, struct cell** pL) { 32 void ajout_tete(char elem, struct cell** pL) {
29 struct cell* p; 33 struct cell* p;
30 -  
31 p = malloc(sizeof(struct cell)); 34 p = malloc(sizeof(struct cell));
32 - //p->arbre = malloc(sizeof(struct node)); 35 + p->arbre = malloc(sizeof(struct node));
33 p->arbre->lettre = elem; 36 p->arbre->lettre = elem;
34 p->arbreSuivant = *pL; 37 p->arbreSuivant = *pL;
35 *pL = p; 38 *pL = p;
36 } 39 }
37 40
38 -void lien_listeFils(struct cell** pL) {  
39 - struct cell* p;  
40 - p = malloc(sizeof(struct cell));  
41 -  
42 - (*pL)->arbre->listeFils = p;  
43 -}  
44 -  
45 -struct cell* insertion(char elem, struct cell** pL) {  
46 - printf("insert\n");  
47 - printf("*pL : %p\n", *pL);  
48 - printf("(*pL)->arbre : %p\n", &(*pL)->arbre);  
49 - if((*pL == NULL)||((*pL)->arbre->lettre > elem)) {  
50 - printf("condition1\n");  
51 - //lien_listeFils(pL);  
52 - ajout_tete(elem, pL);  
53 - printf("return insertion : %p\n", (*pL)->arbre->listeFils);  
54 - return (*pL)->arbre->listeFils;  
55 - }  
56 - else if((*pL)->arbre->lettre == elem) { printf("condition2\n"); return (*pL)->arbre->listeFils;}  
57 - else {printf("esle\n"); insertion(elem, &(*pL)->arbreSuivant); }  
58 - 41 +struct cell * insertion(char elem, struct cell** pL) {
  42 + if(((*pL) == NULL) || ((*pL)->arbre->lettre > elem)) {
  43 + ajout_tete(elem, pL);
  44 + return (*pL);
  45 + }
  46 + else if((*pL)->arbre->lettre == elem) {
  47 + return (*pL);
  48 + }
  49 + else return insertion(elem, &(*pL)->arbreSuivant);
59 } 50 }
60 51
61 -/*void affiche_tab(struct node tab[]) {  
62 - for(int i = 0; i < 32; i++) {  
63 - printf("%c\n", tab[i].lettre);  
64 - }  
65 - }*/  
66 52
67 void lire_fichier(FILE* fd, struct node tab_arbre_prcp[]) { 53 void lire_fichier(FILE* fd, struct node tab_arbre_prcp[]) {
68 - printf("entrer lire_fichier\n"); 54 +
  55 + printf("lirefichier\n");
69 struct cell* localisationArbre; 56 struct cell* localisationArbre;
70 char motLu[50]; 57 char motLu[50];
71 - int i = 0;  
72 - printf("addressentré fd: %p\n", fd );  
73 - if(fd!=NULL)  
74 - {  
75 - printf("fd!=NULL\n" );  
76 - while(fscanf(fd, "%s", motLu)==1)  
77 - {  
78 - printf("entrer while\n");  
79 - if((motLu[i] >= 'a') && (motLu[i] <= 'z')) localisationArbre = tab_arbre_prcp[motLu[0]-97].listeFils;  
80 -  
81 - if(motLu[i] == 39) localisationArbre = tab_arbre_prcp[A].listeFils; //A = derniere case du tab 58 +
  59 + while(fscanf(fd, "%s", motLu)==1) {
  60 + int i = 0;
  61 + printf("while lire fichier\n");
  62 + if((motLu[i] >= 'a') && (motLu[i] <= 'z')) {
  63 +
  64 + printf("if((motLu[i] >= 'a') && (motLu[i] <= 'z'))\n");
  65 + localisationArbre = tab_arbre_prcp[motLu[0]-97].listeFils;
  66 + }
  67 +
  68 + if(motLu[i] == 39) {
  69 +
  70 + printf("if(motLu[i] == 39)");
  71 + localisationArbre = tab_arbre_prcp[A].listeFils; //A = derniere case du tab
  72 + }
82 73
83 - printf("avant while : localisation : %p\n", localisationArbre);  
84 - while(motLu[i] != '\0')  
85 - {  
86 - i += 1;  
87 - printf("lettre lue : %c address : %p\n", motLu[i], localisationArbre);  
88 - localisationArbre = insertion(motLu[i], &localisationArbre);  
89 - printf("localisation apres : %p\n", localisationArbre);  
90 - printf("\n");  
91 - }  
92 - printf("\n");  
93 - }  
94 - fclose(fd);  
95 - printf("fin lire fichier\n");  
96 - } 74 + printf("avant while : localisation : %p\n", localisationArbre);
  75 + while(motLu[i] != '\0') {
  76 +
  77 + i += 1;
  78 + printf("lettre lue : %c address : %p\n", motLu[i], localisationArbre);
  79 + localisationArbre = insertion(motLu[i], &localisationArbre);
  80 + printf("localisation apres : %p\n", localisationArbre);
  81 + printf("\n");
  82 + }
  83 + }
  84 + printf("\n");
  85 + fclose(fd);
  86 +
  87 + printf("fin lire fichier\n");
  88 +
97 } 89 }
98 90
99 91
100 int main(int argc, char* argv[]) { 92 int main(int argc, char* argv[]) {
101 FILE* fd; 93 FILE* fd;
102 - fd=NULL;  
103 -  
104 - struct node tab_arbre[A+1];  
105 - //struct node Arbre;  
106 - //char lettre;  
107 - printf("etape1\n");  
108 -  
109 - if(argc>1) fd = fopen(argv[1], "r"); 94 + struct node tab_arbre[A];
110 95
111 - printf("etape2\n");  
112 - initialisation_tab_arbre(tab_arbre); 96 + if(argc>1) fd = fopen(argv[1], "r");
  97 + else fd = NULL;
  98 + if (fd == NULL) {
  99 + printf("Error : couldn't open file\n");
  100 + return 1;
  101 + }
  102 +
113 103
114 - printf("tab_arbre[0].listeFils: %p \n", tab_arbre[0].listeFils); 104 + initialisation_tab_arbre(tab_arbre);
115 105
116 - 106 + printf("avant lire fichier\n");
117 lire_fichier(fd, tab_arbre); 107 lire_fichier(fd, tab_arbre);
118 - printf("tab_arbre[0].listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->lettre); 108 + //printf("tab_arbre[0].listeFils->arbre->lettre : %c\n", tab_arbre[0].listeFils->arbre->lettre);
119 //scanf("%c", &lettre); 109 //scanf("%c", &lettre);
120 //insertion(lettre, &(Arbre.listeFils)); 110 //insertion(lettre, &(Arbre.listeFils));
121 //printf("lettre : %c\n", Arbre.listeFils->arbre->lettre); 111 //printf("lettre : %c\n", Arbre.listeFils->arbre->lettre);
  112 + printf("avant return 0\n");
122 return 0; 113 return 0;
123 } 114 }
projet0segfault.exe 0 → 100644
No preview for this file type