Ok. I'm creating an AI conversation program. The first thing I'm doing is creating a library that dissects sentences. The breakdownintowords() function is working very well, except for a small bug (note that the function isn't complete). Whenever I input "Do you know my grnadmother?", it displays:
(seperating words)
do
you
know
my
|\|||&^(ect....)|\my
It looks like char word5[21] is not being written to. Below is the main code, then the class code, and then specifically where I think the problem is:
The class code (with function.....):Code:#include <iostream.h> #include "input.h" int main() { sentence user(150); cin.getline(user,150,'\n'); cout << user << endl; user.BreakDownIntoWords(10); return 0; }
Where I think the problem is.... (in word seperating function):Code:class sentence { public: int length; char* value; sentence(int temp_length) { value = new char[temp_length]; length = temp_length; } ~sentence() { delete value; } char& operator[](int ind) { return value[ind]; } operator char*() { return value; } int BreakDownIntoWords(int words_max); }; sentence::BreakDownIntoWords(int words_max) { int wordstart = 0; int numberofwords = 0; int wordcount = 0; char* word; char word1[21]; char word2[21]; char word3[21]; char word4[21]; char word5[21]; char word6[21]; char word7[21]; char word8[21]; char word9[21]; char word10[21]; char word11[21]; char word12[21]; char word13[21]; char word14[21]; char word15[21]; char word16[21]; char word17[21]; char word18[21]; char word19[21]; char word20[21]; for(int x = -1; x < length; x++) { switch(value[x]) { case '\0': { goto END; }break; case ' ': { wordcount++; switch(wordcount) { case 1: { word = word1; }break; case 2: { word = word2; }break; case 3: { word = word3; }break; case 4: { word = word4; }break; case 5: { word = word5; }break; case 6: { word = word6; }break; case 7: { word = word7; }break; case 8: { word = word8; }break; case 9: { word = word9; }break; case 10: { word = word10; }break; case 11: { word = word11; }break; case 12: { word = word12; }break; case 13: { word = word13; }break; case 14: { word = word14; }break; case 15: { word = word15; }break; case 16: { word = word16; }break; case 17: { word = word17; }break; case 18: { word = word18; }break; case 19: { word = word19; }break; case 20: { word = word20; }break; default: { cout << "ERROR: Critical array overbounds!!!" << endl; return 0; }break; } int z = 0; for(int y = wordstart; y < x; y++) { word[z] = value[y]; z++; } word[z] = '\0'; wordstart = x + 1; }break; default: { }break; } } END: cout << word1 << endl; cout << word2 << endl; cout << word3 << endl; cout << word4 << endl; cout << word5 << endl; return numberofwords; }
By the way, if you have any critiques (and hell you sure will) about my coding style/technique please voice them. Thanks for the help.Code:int z = 0; for(int y = wordstart; y < x; y++) { word[z] = value[y]; z++; } word[z] = '\0'; wordstart = x + 1;



LinkBack URL
About LinkBacks


