Uva 492 Solution

#include<bits/stdc++.h>
using namespace std;

string construct(string s)
{
    int l = s.size(), i, j, f = 0, t = 0;
    j = l-1;
    string a = "", b = "";
    char ch;
    while(!((s[j]>= 'A' && s[j] <= 'Z') || (s[j] >= 'a' && s[j] <= 'z')) && j >= 0)
    {
        b.push_back(s[j]);
        j--;
    }
    for(i=0; i<=j; i++)
    {
        if(i==0)
        {
            if(s[i] != 'a' && s[i] != 'e' && s[i] != 'i' && s[i] != 'o' && s[i] != 'u' && s[i] != 'A' && s[i] != 'E' && s[i] != 'I' && s[i] != 'O' && s[i] != 'U')
            {
                ch = s[i];
                f = 1;
            }
            else
            {
                t = 1;
                a.push_back(s[i]);
            }
        }
        else
            a.push_back(s[i]);
    }
    if(f == 1 && t == 0)
    {
        a.push_back(ch);
        a += "ay";
    }
    else if(f == 0 && t == 1)
    {
        a += "ay";
    }
    reverse(b.begin(), b.end());
    a += b;
    return a;
}

int main()
{
    string s;

    while(getline(cin, s))
    {
        int l = s.size(), i, j;
        string p = "";
        string b = "";

        for(i=0; i<l; i++)
        {
            if(!((s[i]>= 'A' && s[i] <= 'Z') || (s[i] >= 'a' && s[i] <= 'z')))
            {
                if(p == "")
                {
                    b.push_back(s[i]);
                    continue;
                }
                string a = construct(p);
                b += a;
                b.push_back(s[i]);
                p = "";
            }
            else
                p.push_back(s[i]);
        }

        if(p != "")
        {
            string a = construct(p);
            b += a;
        }

        cout << b << endl;
    }

    return 0;
}

Comments