string given - całe słowo
string code(string) - funkcja odwracająca słowo, zakładam, że masz ją, bo była potrzebna w a)
void Passwords::make_palindrom()
{
int i = given.size() - 1;
while (given.substr(0, i) != code(given.substr(0, i)))
{
i--; //dekrementacja i, aż do momentu, gdy substring kończący się na i, jest równy zakodowanemu substringowi, kończącemu się na i
}
palindrom = given.substr(0, i); //najdłuższy palindrom w słowie
p_length = i; //długość tego palindromu
}
{
rest = given.substr(p_length, (given.size() - p_length)); //szukasz substringu, zaczynającego się tam, gdzie kończy się najdłuższy palindrom
pass = code(rest);
pass += palindrom;
pass += rest;
}
W taki sposób ja to robiłem, jak masz pytania to wal śmiało.