Commit de5faa60f5039efbe9081710c74127b66d1d5116
1 parent
0bc3d1ad
Update isEnd
Showing
2 changed files
with
34 additions
and
23 deletions
Show diff stats
treeh.c
@@ -41,30 +41,34 @@ bool is_followed(tree t){ | @@ -41,30 +41,34 @@ bool is_followed(tree t){ | ||
41 | } | 41 | } |
42 | return false; | 42 | return false; |
43 | } | 43 | } |
44 | -bool is_end(tree t){ | ||
45 | - return t->isEnd; | ||
46 | -} | 44 | + |
45 | +bool is_end(tree t){return t->isEnd%2;} | ||
46 | +bool ends_with_apostrophe(tree t){return (t->isEnd/4)%2;} | ||
47 | + | ||
48 | +bool is_common_end(tree t){return !(t->isEnd/4);} | ||
49 | +bool is_proper_end(tree t){return (t->isEnd/4)%2;} | ||
50 | +bool is_acronyme_end(tree t){return t->isEnd/8;} | ||
47 | int hash(char c){ | 51 | int hash(char c){ |
48 | - //needs to check c wether isalpha or '\'' | ||
49 | - if(c='\'') | ||
50 | - return 0; | ||
51 | - return c%32; | 52 | + //needs to check c wether isalpha |
53 | + return c%32-1; | ||
52 | } | 54 | } |
53 | - | ||
54 | - | 55 | +bool is_proper_end(tree);//if true 1st letter is upper ;//if true all letters are lower |
55 | 56 | ||
56 | 57 | ||
57 | 58 | ||
58 | //loading functions | 59 | //loading functions |
59 | bool addto_tree(tree t,string s){ | 60 | bool addto_tree(tree t,string s){ |
60 | - //recursive, when called : set isIn to true, and reset index | 61 | + //recursive, need to check all letter in s are alpha or '\'s' |
61 | //return wether s is already in t or not | 62 | //return wether s is already in t or not |
62 | bool ret; | 63 | bool ret; |
63 | if(s[0]=='\0'){ | 64 | if(s[0]=='\0'){ |
64 | - ret=t->isEnd; | 65 | + ret=is_end(t); |
65 | t->isEnd=true; | 66 | t->isEnd=true; |
66 | return ret; | 67 | return ret; |
67 | } | 68 | } |
69 | + if(s[0]=='\''){ | ||
70 | + | ||
71 | + } | ||
68 | if(t->next[hash(s[0])]==NULL){ | 72 | if(t->next[hash(s[0])]==NULL){ |
69 | t->next[hash(s[0])]=make_node(s[0],false); | 73 | t->next[hash(s[0])]=make_node(s[0],false); |
70 | addto_tree2(t->next[hash(s[0])],s+1); | 74 | addto_tree2(t->next[hash(s[0])],s+1); |
@@ -80,10 +84,8 @@ void addto_tree2(tree t,string s){ | @@ -80,10 +84,8 @@ void addto_tree2(tree t,string s){ | ||
80 | t->isEnd=true; | 84 | t->isEnd=true; |
81 | return; | 85 | return; |
82 | } | 86 | } |
87 | + if(s[0]=='\'') | ||
83 | t->next[hash(s[0])]=make_node(s[0],false); | 88 | t->next[hash(s[0])]=make_node(s[0],false); |
84 | addto_tree2(t->next[hash(s[0])],s+1); | 89 | addto_tree2(t->next[hash(s[0])],s+1); |
85 | } | 90 | } |
86 | 91 | ||
87 | -void loadfrom_file(tree,FILE*){} | ||
88 | -void loadfrom_keyboard(tree){} | ||
89 | - |
treeh.h
@@ -6,26 +6,35 @@ | @@ -6,26 +6,35 @@ | ||
6 | #include <string.h> | 6 | #include <string.h> |
7 | #include <stdbool.h> | 7 | #include <stdbool.h> |
8 | 8 | ||
9 | -#define NBCHAR 27 //A-Z + ' | 9 | +#define NBCHAR 26 //A-Z |
10 | 10 | ||
11 | 11 | ||
12 | typedef struct _node node, *tree; | 12 | typedef struct _node node, *tree; |
13 | struct _node{ | 13 | struct _node{ |
14 | char letter; | 14 | char letter; |
15 | - bool isEnd; | 15 | + char isEnd; |
16 | + //0 no,1 yes,+2 if ends with 's | ||
17 | + //+4if proper, +8if allUpper | ||
16 | node* next[NBCHAR]; | 18 | node* next[NBCHAR]; |
17 | }; | 19 | }; |
18 | 20 | ||
19 | -tree make_empty_tree(); | ||
20 | -node* make_empty_node(); | ||
21 | -node* make_node(char,bool); | ||
22 | -void delete_tree(tree); | 21 | +tree make_empty_tree();//create a null node* |
22 | +node* make_empty_node();//malloc a node and initialize it | ||
23 | +node* make_node(char,bool);//id | ||
24 | +void delete_tree(tree);//free(tree) and delete tree on all t->next | ||
25 | + | ||
26 | +bool is_empty(tree);//==NULL | ||
27 | +bool is_followed(tree);//if true tree has following letters | ||
28 | + | ||
29 | +bool is_end(tree);//if true word can end here | ||
30 | +bool is_proper_end(tree);//if true 1st letter is upper | ||
31 | +bool is_common_end(tree);//if true all letters are lower | ||
32 | +bool is_acronyme_end(tree);//if true all letters are upper | ||
33 | +bool ends_with_apostrophe(tree);//if true word can be word's | ||
23 | 34 | ||
24 | -bool is_empty(tree); | ||
25 | -bool is_end(tree); | ||
26 | -bool is_followed(tree);//tells if tree has following letters | ||
27 | int hash(char);//need to check if isalpha | 35 | int hash(char);//need to check if isalpha |
28 | 36 | ||
37 | +//recursive can only be called in a dico instance | ||
29 | void addto_tree(tree,string,int); | 38 | void addto_tree(tree,string,int); |
30 | void addto_tree2(tree,string); | 39 | void addto_tree2(tree,string); |
31 | 40 |