//******************************************************************************** // C++ Certificate Program Intermediate Spring 1999 : Stephen Philips // // Final Project // File : \\Venus\katy\C++ Certificate\intermediate\Final Project // \WordCountBTree.h // // Purpose : Declaration for class WordCountBTree to be used for counting words // in Lecture 6 // // Author : Hsin-yi F. Berg // Date : 6/2/99 // Update : 6/8/99 //********************************************************************************
#include "WordCountBTree.h" #include <iostream.h> #include <ctype.h> #include <stdlib.h> #include <string.h>
/*-----------------member function definition for class Token------------------*/
/* Token::Token()
Constructor for a Token. */ Token::Token() { token = ""; }
/* Token::~Token()
Restructor for the Token. */ Token::~Token() { if(token != "") delete[] token; }
/* char *Token::GetNextToken(istream & in)
Takes an istream and breaks it up into "tokens". Returns a string. If an empty string is returned, it's EOF */ char *Token::GetNextToken(istream &in) { char next; // char for peek operation char ch; // char for get operation
token = new char[max_char + 1];
int flag = 0; // flag to be set when a token is finished // being read in
if(in.eof()) { cout << "End of file reached...\n\n" << endl; exit(0); }
// start at new token while(flag == 0) { // look ahead in istream next = in.peek();
// if it's not the end-of-file, check if it's space or tab // ignore all the space if(isspace(next)) in.eatwhite(); // quit while we're ahead
if(next == EOF) { token = ""; flag = 1; break; }
// keep reading in chars from istream until we // get to a white space or EOF or until maximum char size // is reached. int i = 0; do { ch = in.get(); token[i++] = ch; next = in.peek(); } while (! isspace(next) && (next != EOF) && (i < max_char));
// terminate the string token[i] = '\0';
// set the end-of-token flag flag = 1; }
return token; }
/* char *Token::GetValue()
Converts Token to a char *. */ char *Token::GetValue() { return token; }
/*--------------member function definition for class WordCountTree---------------*/
/* WordCountBTree::WordCountBTree()
Constructor of a WordCountBTree. */ WordCountBTree::WordCountBTree() {}
/* WordCountBTree::~WordCountBTree()
Destructor of a WordCountBTree. */ WordCountBTree::~WordCountBTree() {}
/* void WordCountBTree::CountWordFreq(istream &in)
Put all the words in the Btree and count the frequencies. */ void WordCountBTree::CountWordFreq(istream &in) { /* cout << "curToken is: " << curToken.GetValue(); cout << endl;
curToken.GetNextToken(in); cout << "next token is : " << curToken.GetValue() << endl;
curToken.GetNextToken(in); cout << "next token is : " << curToken.GetValue() << endl; */
// if the word is "" then we reach EOF while(strcmp(curToken.GetNextToken(in), "") != 0) { Add(curToken.GetValue()); }
}
/* void WordCountBTree::PrintWordFreq()
Print out all the words that are in the tree, and their frequencies. */ void WordCountBTree::PrintWordFreq() { Print(); }
Back End