Levels Tought:
Elementary,Middle School,High School,College,University,PHD
Teaching Since: | Apr 2017 |
Last Sign in: | 234 Weeks Ago, 4 Days Ago |
Questions Answered: | 12843 |
Tutorials Posted: | 12834 |
MBA, Ph.D in Management
Harvard university
Feb-1997 - Aug-2003
Professor
Strayer University
Jan-2007 - Present
//============================================================================
// Name
: WordFrequency.cpp
// Author
: Mi
// Version
:
// Copyright
: Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include
#include
#include
#include
#include
#include
#include <iostream>
<fstream>
<string>
"wordscollection.h"
"bintree.h"
"frequency.h"
<sstream> using namespace std;
using namespace FREQPROJ;
binary_tree_node<frequency<string> > *froot = NULL;
int firstTime=1;
void addHelper(binary_tree_node<frequency<string> > *root,
frequency<string> fToken) {
frequency<string> fNode = root->data();
if (fNode > fToken.data()) {
if (!root->left()) {
root->set_left(new binary_tree_node<frequency<string>
>(fToken));
} else {
addHelper(root->left(), fToken);
}
} else if (fNode.data() == fToken.data()) {
//increment freq
++fNode;
root->set_data(fNode);
//cout<<"Inside Equal Member :" <<fNode.data()<<fNode.count()<<endl;
} else {
if (!root->right()) {
root->set_right(new binary_tree_node<frequency<string>
>(fToken));
} else {
addHelper(root->right(), fToken);
}
}
}
void add(binary_tree_node<frequency<string> >* root, frequency<string> fToken) {
if (root) {
addHelper(root, fToken);
} else {
root = new binary_tree_node<frequency<string> >(fToken);
}
}
void printWordFreq(frequency<string> token) {
cout << token.data() << "[" << token.count() << "] ";
}
void addHelperF(binary_tree_node<frequency<string> > *root,
frequency<string> fToken) {
frequency<string> fNode = root->data();
if (fNode < fToken.count()) {
if (!root->left()) {
root->set_left(new binary_tree_node<frequency<string> >(fToken)); } else {
addHelperF(root->left(), fToken);
}
} else if (fNode.data() == fToken.data()) {
//increment freq
++fNode;
root->set_data(fNode);
//cout<<"Inside Equal Member :" <<fNode.data()<<fNode.count()<<endl; } else {
if (!root->right()) {
root->set_right(new binary_tree_node<frequency<string>
>(fToken));
} else {
addHelperF(root->right(), fToken);
}
}
}
void addF(binary_tree_node<frequency<string> >* root, frequency<string> fToken)
{
if (root) {
addHelperF(root, fToken);
} else {
root = new binary_tree_node<frequency<string> >(fToken);
}
}
void traverseTreeHelper(frequency<string> token) {
if(firstTime==1){
froot->set_data(token);
firstTime=0;
}
else{
addF(froot,token);
}
}
int main(int argc, char *argv) {
if (argc > 1) {
//Read file stream
string filename = argv[1];
wordscollection wc = wordscollection();
if (wc.tokenizeFile(filename)) {
binary_tree_node<frequency<string> > *root = NULL;
//get first token to init tree
if (wc.hasTokens()) {
string token = wc.getNextToken();
frequency<string> fToken = frequency<string>(token);
root = new binary_tree_node<frequency<string> >(fToken);
while (wc.hasTokens()) {
string token = wc.getNextToken();
frequency<string> fToken =
frequency<string>(token);
add(root, fToken);
}
}
//print(root, tree_size(root));
//sort alphabetically
cout << "WORD FREQUENCY - Alphabetical" << endl;
inorder(printWordFreq, root);
//sort by frequency
froot = new binary_tree_node<frequency<string> >(); inorder(traverseTreeHelper, root);
cout << endl<<"WORD FREQUENCY - Highest to Lowest" << endl;
inorder(printWordFreq, froot);
} else {
cout << "Unable to tokenize file" << endl;
}
//
//
//
//
//
//
//
//
//
} binary_tree_node<string>* root = new binary_tree_node<string>();
add(root, "2");
add(root, "1");
add(root, "4");
add(root, "3");
add(root, "0");
print(root, tree_size(root));
inorder(f, root);
}
return 0;
Â
-----------