Question
Please help with C++ program - calling a function while reading from a text file. My homework assignment: Design a hash table to hold strings
Please help with C++ program - calling a function while reading from a text file.
My homework assignment:
Design a hash table to hold strings with maximum length 32. You should use quadratic probing as the collision-resolution scheme. You have to implement the following functions in C++: hashIndex A hash function which maps a given key which is a string (its maximum length is 32) to an integer value between 0 and HASH_TABLE_SIZE-1. Make sure that your hash function uses all characters of the string in the computation.
Make sure that your hash table size is a prime number bigger than 1000. insert Inserts the given key into the hash table, and returns its location. If the key is already in the table, it returns the location of the key. main Reads a text file (sample.txt), and inserts all of the words in that file into the hash table. You assume that each word is separated with one or more white space character. After the insertion of all words, your main function should print the load factor of that hash table, and average number probes for successful searches for that hash table (Note: you are not going to use a formula to calculate the average number probes. In order to calculate the average number of probes for successful searches, your program should find the total number of probes during the insertions and divide it by the number of words.)
Since I will test your programs using Microsoft Visual Studio, make sure that your program works under Visual Studio.
Code:
************************* Main.cpp *********************
#include
#include
#include
#include
#include
using namespace std;
class HashNode
{
public:
vector
int key;
//Constructor of hashnode
HashNode(vector
{
this->value = value;
this->key = K;
}
};
class Hash
{
public:
Hash()
{
this->Size = 32;
for (int i = 0; i
{
hashTable[i].key = 0;
}
}
Hash(unsigned int HashSize, unsigned int(*hashFunction)(string in))
{
this->Size = HashSize;
for (unsigned int i = 0; i
{
hashTable[i].key = 0;
}
}
int hashFunction(string in)
{
if (in[0] >= 'a' && in[0]
return in[0] - 'a';
else
return 0;
}
~Hash()
{
}
void Insert(string in)
{
int index = hashFunction(in);
if (hashTable[index].key == 0)
{
hashTable[index].key = 1;
vector
v.push_back(in);
hashTable[index].value = v;
}
else
{
hashTable[index].key += 1;
vector
v.push_back(in);
hashTable[index].value = v;
}
}
unsigned int GetCount(string in)
{
int index = hashFunction(in);
int count = 0;
if (hashTable[index].key != 0)
{
hashTable[index].key += 1;
vector
for (unsigned int i = 0; i
{
if (v[i] == in)
count++;
}
}
return count;
}
void PrintHashEntries()
{
for (unsigned int index = 0; index
{
if (hashTable[index].key != 0)
{
cout
vector
for (unsigned int i = 0; i
{
cout
}
cout
}
}
}
void PrintHashStats()
{
int used = 0;
int maxCount = INT_MIN;
int sum = 0;
int uniqueWordCount = 0, TotalWordCount = 0;
for (unsigned int index = 0; index
{
if (hashTable[index].key != 0)
used++;
if (hashTable[index].key > maxCount)
maxCount = hashTable[index].key;
sum += hashTable[index].key;
uniqueWordCount += hashTable[index].key;
cout
vector
TotalWordCount += v.size();
}
cout
cout
cout
cout
cout
}
private:
unsigned int Size = 1019;
vector
};
int main()
{
/* Please help call the functions below while using reading from a text file
*
* Would to call PrintHashStats() function after reading in the text file
*
* Hash hs;
* hs.PrintHashStats();
*
* will compile and read without the above call
*/
string hashTable[1019];
int hashKey = 0, i = 1;
ifstream myfile("keywords.txt");
if (myfile.is_open())
{
while (getline(myfile, hashTable[hashKey]))
{
cout
hashKey++;
}
while (i == 1)
{
cout
cin >> hashKey;
cout
cout
cout
cout
cin >> i;
cout
}
myfile.close();
}
else cout
system("pause");
return 0;
}
********************************* keywords.txt **********************
drivers
will
take
processes
request
from
device
and
execute
them
on
the
device
somethingIsPrinting
king
working
DReferences Microsoft Visual C+Runtime Library DExternal Depende Header Files Resource Files Source Files Debug Assertion Failed! Program: CAWINDOWSSYSTEM32MSVCP140D.dll File: cprogram files (x86)microsoft visual studio 2017enterpriselvctoolsimsvc 14.13.26128 includelvect or Line: 1806 keywords.txt DMain.cpp Expression: vector subscript out of range For information on how your program can cause an assertion failure, see the Visual C++documentation on asserts. Press Retry to debug the application) Abort Retry gnre DReferences Microsoft Visual C+Runtime Library DExternal Depende Header Files Resource Files Source Files Debug Assertion Failed! Program: CAWINDOWSSYSTEM32MSVCP140D.dll File: cprogram files (x86)microsoft visual studio 2017enterpriselvctoolsimsvc 14.13.26128 includelvect or Line: 1806 keywords.txt DMain.cpp Expression: vector subscript out of range For information on how your program can cause an assertion failure, see the Visual C++documentation on asserts. Press Retry to debug the application) Abort Retry gnreStep by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started