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
92
93
94
95
96
97
98
|
// Implements a dictionary's functionality
#include <ctype.h>
#include <stdbool.h>
#include <stdio.h>
#include "dictionary.h"
// Represents a node in a hash table
typedef struct node
{
char word[LENGTH + 1];
struct node *next;
} node;
// TODO: Choose number of buckets in hash table
const unsigned int N = 26;
// Hash table
node *table[N];
// Returns true if word is in dictionary, else false
bool check(const char *word)
{
// TODO
return false;
}
// Hashes word to a number
unsigned int hash(const char *word)
{
// (sum of (letter - 'A') % 26) of a word to get a value of where to store it in the hash table
int val = 0;
for (int i = 0; word[i] != '\0'; i++)
{
val += toupper(word[i]) - 'A';
}
return val %= 26;
}
// TODO
// Loads dictionary into memory, returning true if successful, else false
bool load(const char *dictionary)
{
// Open dictionary file
FILE *source = fopen(dictionary, "r");
if (source == NULL)
{
return false;
}
//read each word in dictionary
char word[LENGTH + 1];
while(fscanf(source, "%s", word) != "E0F")
{
malloc
}
/*
use fscanf(file, "%s", word) to grab words
check for ended file
create new node
use malloc
check if return is NULL
copy word from fscanf into node using strcpy
use hash function
function takes string and returns index
insert node into hash table
HOW
*/
// Close the dictionary file
fclose(source);
}
// Returns number of words in dictionary if loaded, else 0 if not yet loaded
unsigned int size(void)
{
// TODO
char c;
int n = 0;
while (fread(&c, 1, 1, file))
{
if (c == "\n")
{
n++;
}
}
return n;
}
// Unloads dictionary from memory, returning true if successful, else false
bool unload(void)
{
// TODO
return false;
}
|