#include <iostream>
#include <cctype>
#include <string>
using namespace std;
struct Word
{
string english; // English sentence
string piglatin; // Pig latin sentence
};
// PT 1. Function prototype
Word* splitSentence(const string words, int &size);
int main()
{
string userSentence;
int size;
// Get the users sentence to convert to pig latin
cout << "Please enter a string to convert to pig latin:\n";
getline(cin, userSentence);
// Directs to Word * splitSentence function
Word* tempptr = splitSentence(userSentence, size);
for(int i = 0; i < size; ++i) {
cout << tempptr[i].english << endl;
}
delete [] tempptr;
return 0;
}
//PT 1. Analyze the sentence
Word* splitSentence(const string words, int &size)
{
bool flag = true;
int num = 0;
char ch;
for (int i = 0; i < words.length(); ++i)
{
ch = words[i];
if (isalpha(ch))
{
if (flag)
{
flag = false;
++num;
}
}
else if (isspace(ch))
{
flag = true;
}
}
Word *sentence = new Word[num];
int index = -1;
flag = true;
num = 0;
for (int i = 0; i < words.length(); ++i)
{
ch = words[i];
if (isalpha(ch))
{
if (flag)
{
flag = false;
++num;
++index;
}
if (isupper(ch))
{
ch = tolower(ch);
}
sentence[index].english += ch;
}
else if (isspace(ch))
{
flag = true;
}
}
size = num;
return sentence;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2N0eXBlPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKCnN0cnVjdCBXb3JkIAp7CiAgICBzdHJpbmcgZW5nbGlzaDsgICAgIC8vIEVuZ2xpc2ggc2VudGVuY2UgCiAgICBzdHJpbmcgcGlnbGF0aW47ICAgIC8vIFBpZyBsYXRpbiBzZW50ZW5jZSAKfTsKCi8vIFBUIDEuIEZ1bmN0aW9uIHByb3RvdHlwZSAKV29yZCogc3BsaXRTZW50ZW5jZShjb25zdCBzdHJpbmcgd29yZHMsIGludCAmc2l6ZSk7CgppbnQgbWFpbigpCnsKICAgIHN0cmluZyB1c2VyU2VudGVuY2U7CiAgICBpbnQgc2l6ZTsgCiAgICAKICAgIC8vIEdldCB0aGUgdXNlcnMgc2VudGVuY2UgdG8gY29udmVydCB0byBwaWcgbGF0aW4gCiAgICBjb3V0IDw8ICJQbGVhc2UgZW50ZXIgYSBzdHJpbmcgdG8gY29udmVydCB0byBwaWcgbGF0aW46XG4iOwogICAgZ2V0bGluZShjaW4sIHVzZXJTZW50ZW5jZSk7CgogICAgLy8gRGlyZWN0cyB0byBXb3JkICogc3BsaXRTZW50ZW5jZSBmdW5jdGlvbiAKICAgIFdvcmQqIHRlbXBwdHIgPSBzcGxpdFNlbnRlbmNlKHVzZXJTZW50ZW5jZSwgc2l6ZSk7CgogICAgZm9yKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgCWNvdXQgPDwgdGVtcHB0cltpXS5lbmdsaXNoIDw8IGVuZGw7CiAgICB9CiAgICAJCiAgICBkZWxldGUgW10gdGVtcHB0cjsKCiAgICByZXR1cm4gMDsgICAKfQoKLy9QVCAxLiBBbmFseXplIHRoZSBzZW50ZW5jZSAKV29yZCogc3BsaXRTZW50ZW5jZShjb25zdCBzdHJpbmcgd29yZHMsIGludCAmc2l6ZSkKewogICAgYm9vbCBmbGFnID0gdHJ1ZTsKICAgIGludCBudW0gPSAwOwogICAgY2hhciBjaDsKICAgIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB3b3Jkcy5sZW5ndGgoKTsgKytpKQogICAgewogICAgICAgIGNoID0gd29yZHNbaV07CgogICAgICAgIGlmIChpc2FscGhhKGNoKSkKICAgICAgICB7CiAgICAgICAgICAgIGlmIChmbGFnKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmbGFnID0gZmFsc2U7CiAgICAgICAgICAgICAgICArK251bTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpc3NwYWNlKGNoKSkKICAgICAgICB7CiAgICAgICAgICAgIGZsYWcgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBXb3JkICpzZW50ZW5jZSA9IG5ldyBXb3JkW251bV07CiAgICBpbnQgaW5kZXggPSAtMTsKCiAgICBmbGFnID0gdHJ1ZTsKICAgIG51bSA9IDA7CiAgICAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd29yZHMubGVuZ3RoKCk7ICsraSkKICAgIHsKICAgICAgICBjaCA9IHdvcmRzW2ldOwoKICAgICAgICBpZiAoaXNhbHBoYShjaCkpCiAgICAgICAgewogICAgICAgICAgICBpZiAoZmxhZykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZmxhZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgKytudW07CiAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoaXN1cHBlcihjaCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNoID0gdG9sb3dlcihjaCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHNlbnRlbmNlW2luZGV4XS5lbmdsaXNoICs9IGNoOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChpc3NwYWNlKGNoKSkKICAgICAgICB7CiAgICAgICAgICAgIGZsYWcgPSB0cnVlOwogICAgICAgIH0KICAgIH0KCiAgICBzaXplID0gbnVtOwogICAgcmV0dXJuIHNlbnRlbmNlOwp9