#include #include #include #include "WordT.h" #include "MyUtil.h" using namespace std; void ReadData( WordT * & words, size_t & size); void PrintWords(const WordT words[], size_t size); void Sort(WordT words[], size_t size); int main() { WordT * words {nullptr}; size_t size{0}; ReadData(words, size); Sort(words, size); PrintWords(words, size); delete [] words; return 0; } void Swap (WordT & a, WordT & b) { WordT tmp = a; a = b; b = tmp; } void Sort(WordT words[], size_t size){ size_t current, small, i; for(current = 0; current < size; current ++) { small = current; for(i = current+1; i < size; i++) { if (words[i].Word() < words[small].Word()) { small =i; } } if (small != current) { Swap(words[current], words[small]); } } } string FixWord(string word) { string rValue; rValue = MakeLower(word); rValue = Strip(rValue); return rValue; } size_t FindWord(WordT words[], size_t size, string key) { size_t pos{0}; while (pos < size and words[pos].Word() != key) { pos++; } return pos; } void Extend(WordT * & words, size_t & size) { WordT * tmp{nullptr}; size_t i; tmp = new WordT[size+1]; for(i = 0; i < size; i++) { tmp[i] = words[i]; } if (words != nullptr) { delete [] words; } words = tmp; size++; return; } void ReadData( WordT * & words, size_t & size){ ifstream inFile; string word; size_t pos; inFile.open("ocap.txt"); inFile >> word; while(inFile) { word = FixWord(word); if (word != "") { pos = FindWord(words, size, word); if (pos < size) { words[pos].IncrementCount(); } else { Extend(words, size); words[size-1].Word(word); } } inFile >> word; } inFile.close(); return; } void PrintWords(const WordT words[], size_t size){ size_t i; for(i =0; i < size; i++) { cout << setw(20) << words[i].Word() << setw(4) << words[i].GetCount() << endl; } }