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:
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;
}
The class code (with 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;
}
Where I think the problem is.... (in word seperating function):
Code:
int z = 0;
for(int y = wordstart; y < x; y++)
{
word[z] = value[y];
z++;
}
word[z] = '\0';
wordstart = x + 1;
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.