Commit 003d3e48f2e0955c6a4373de1d5dd7d2c982aa6f

Authored by bjeanlou
1 parent 11c78e6d

update6 withHash

Showing 4 changed files with 58 additions and 30 deletions   Show diff stats
1 #include "dico.h" 1 #include "dico.h"
2 2
3 void make_empty_dico(dico d){ 3 void make_empty_dico(dico d){
4 - for(int i=0;i<NB1CHAR;i++) 4 + for(int i=0;i<NBCHAR;i++)
5 d[i]=NULL; 5 d[i]=NULL;
6 } 6 }
7 void delete_dico(dico d){ 7 void delete_dico(dico d){
@@ -11,7 +11,7 @@ void delete_dico(dico d){ @@ -11,7 +11,7 @@ void delete_dico(dico d){
11 11
12 12
13 13
14 -bool addto_dico(dico d,string s){ 14 +bool addto_dico(dico d,const string s){
15 byte endKind=end_kind(s); 15 byte endKind=end_kind(s);
16 if(!is_word(endKind)){ 16 if(!is_word(endKind)){
17 printf("incorrect word"); 17 printf("incorrect word");
@@ -27,32 +27,52 @@ bool addto_dico(dico d,string s){ @@ -27,32 +27,52 @@ bool addto_dico(dico d,string s){
27 } 27 }
28 } 28 }
29 29
30 -bool lire(string s,FILE*stream){  
31 - //need to check if stream !=NULL  
32 - //ret true if error else false  
33 - char* posRet=NULL;  
34 - if (fscanf(stream,"%s",s) != NULL){  
35 - posRet=strchr(chaine, '\n');  
36 - if (posRet!= NULL){  
37 - *posRet = '\0';  
38 - }  
39 - return false;  
40 - }  
41 - else  
42 - return true;  
43 -}  
44 -  
45 void loadfrom_keyboard(dico d){loadfrom_file(d,stdin);} 30 void loadfrom_keyboard(dico d){loadfrom_file(d,stdin);}
46 void loadfrom_file(dico d,FILE*stream){ 31 void loadfrom_file(dico d,FILE*stream){
47 if(stream==NULL){ 32 if(stream==NULL){
48 printf("sorry, we can't open the file"); 33 printf("sorry, we can't open the file");
49 return; 34 return;
50 } 35 }
51 - string str=calloc(30*sizeof(char));  
52 - while(fscanf(""strstream)!=NULL) 36 + char word[30]={0};
  37 + while(fscanf(stream,"%s",word)!=EOF)
  38 + addto_dico(d,word);
  39 + printf("load success");
53 } 40 }
54 41
55 void printto_terminal(dico d){printto_file(dico,stdout);} 42 void printto_terminal(dico d){printto_file(dico,stdout);}
56 -void printto_file(dico d,FILE*f){  
57 - ; 43 +void printto_file(dico d,FILE*stream){
  44 + if(stream==NULL){
  45 + printf("sorry, we can't open the file");
  46 + return;
  47 + }
  48 + if(d==NULL){
  49 + printf("sorry, we can't open the dictionary");
  50 + return;
  51 + }
  52 + for(int i=0;i<NBCHAR;i++){
  53 + print(d[i],stream,"");
  54 + }
  55 +}
  56 +
  57 +void print(tree t,FILE*stream,string prefix){
  58 + //needs to check stream!=NULL
  59 + if(is_empty(t))
  60 + return;
  61 + if(is_end(t)){
  62 + if(is_acronyme_end(t)){
  63 + if(is_straight_end(t)){}
  64 + else{}
  65 + }
  66 + if(is_proper_end(t)){
  67 + if(is_straight_end(t)){}
  68 + else{}
  69 + }
  70 + if(is_common_end(t)){
  71 + if(is_straight_end(t)){}
  72 + else{}
  73 + }
  74 + }
  75 + for(int i=0;i<NBCHAR;i++){
  76 + print(t->next[i],stream);
  77 + }
58 } 78 }
@@ -7,7 +7,7 @@ typedef tree dico[NBCHAR]; @@ -7,7 +7,7 @@ typedef tree dico[NBCHAR];
7 7
8 void make_empty_dico(dico); 8 void make_empty_dico(dico);
9 void delete_dico(dico); 9 void delete_dico(dico);
10 -bool addto_dico(dico,string); 10 +bool addto_dico(dico,const string);
11 11
12 12
13 void loadfrom_file(dico,FILE*); 13 void loadfrom_file(dico,FILE*);
@@ -15,6 +15,6 @@ void loadfrom_keyboard(dico);//i.e. loadfrom_file(dico,stdin); @@ -15,6 +15,6 @@ void loadfrom_keyboard(dico);//i.e. loadfrom_file(dico,stdin);
15 15
16 void printto_file(dico,FILE*); 16 void printto_file(dico,FILE*);
17 void printto_terminal(dico);//i.e. printto_file(dico,stdout); 17 void printto_terminal(dico);//i.e. printto_file(dico,stdout);
18 - 18 +void print(tree,FILE*,string)
19 19
20 #endif 20 #endif
@@ -45,12 +45,13 @@ bool is_followed(const tree t){ @@ -45,12 +45,13 @@ bool is_followed(const tree t){
45 } 45 }
46 46
47 //functions is_end 47 //functions is_end
48 -bool is_end(const tree t){return t->isEnd & 21;}//0b00010101  
49 -bool ends_with_apostrophe(const tree t){return t->isEnd & 42;}//0b00101010 48 +bool is_end(const tree t){return isEnd;}
  49 +bool is_straight_end(const tree t){return t->isEnd & STRAIGHT_END;}
  50 +bool ends_with_apostrophe(const tree t){return t->isEnd & APOSTROPHE_END;}
50 51
51 -bool is_common_end(const tree t){return t->isEnd & 3;}//0b00000011  
52 -bool is_proper_end(const tree t){return t->isEnd & 12;}//0b00001100  
53 -bool is_acronyme_end(const tree t){return t->isEnd & 48;}//0b00110000 52 +bool is_common_end(const tree t){return t->isEnd & COMMON_END ;}
  53 +bool is_proper_end(const tree t){return t->isEnd & PROPER_END;}
  54 +bool is_acronyme_end(const tree t){return t->isEnd & ACRONYME_END;}
54 55
55 56
56 57
@@ -8,6 +8,12 @@ @@ -8,6 +8,12 @@
8 8
9 #define NBCHAR 26 //A-Z 9 #define NBCHAR 26 //A-Z
10 10
  11 +#define COMMON_END 0x03
  12 +#define PROPER_END 0x0B
  13 +#define ACRONYME_END 0x30
  14 +#define STRAIGHT_END 0X15
  15 +#define APOSTROPHE_END 0X2A
  16 +
11 typedef char *string,byte; 17 typedef char *string,byte;
12 typedef struct _node node, *tree; 18 typedef struct _node node, *tree;
13 struct _node{ 19 struct _node{
@@ -26,8 +32,9 @@ void delete_tree(tree);//free(tree) and delete tree on all t-&gt;next @@ -26,8 +32,9 @@ void delete_tree(tree);//free(tree) and delete tree on all t-&gt;next
26 bool is_empty(const tree);//==NULL 32 bool is_empty(const tree);//==NULL
27 bool is_followed(const tree);//if true tree has following letters 33 bool is_followed(const tree);//if true tree has following letters
28 34
29 -bool is_end(const tree);//if true word can end here  
30 -bool ends_with_apostrophe(const tree);//if true word can be word's 35 +bool is_end(const tree);//true when at least 1 of the following functions is true
  36 +bool is_straight_end(const tree);//if true word can end here
  37 +bool ends_with_apostrophe(const tree);//if true word can end here with apostrophe
31 bool is_common_end(const tree);//if true all letters are lower 38 bool is_common_end(const tree);//if true all letters are lower
32 bool is_proper_end(const tree);//if true 1st letter is upper 39 bool is_proper_end(const tree);//if true 1st letter is upper
33 bool is_acronyme_end(const tree);//if true all letters are upper 40 bool is_acronyme_end(const tree);//if true all letters are upper