Tengo que crear un algoritmo que diga si el texto es palindromo o no. He verificado bien y el programa elimina los signos de puntuación en un segundo vector y también lo invierte correctamente, pero al comparar las cadenas espacios y reversa el programa hace lo se le antoja; a veces ejecuta el if y otras veces el else incorrectamente.
¡Ayúdenme por favor! Gracias de antemano.
Código C++:
Ver original#include <iostream>
#include <string>
using namespace std;
int main(){
string cadena; string espacios;
string reversa = "";
char signos[] = "+-*/ <>()[]{}¡!¿?#$%&_@·ºª.,;:";
cout << "BUCANDO PALINDROMOS" << endl << endl;
cout << "Escribe: "; getline(cin, cadena, '\n');
espacios = cadena;
for(short c = cadena.length(); c >= 0; c--){
for(short j = 0; signos[j]; j++){ //Para eliminar los signos de arriba
if(cadena[c] == signos[j]){
espacios.erase(c, 1);
}
}
}
for(short c = espacios.length(); c >= 0; c--){
//Invirtiendo la cadena
reversa += espacios[c];
}
//AQUI EMPIEZA EL PROBLEMA
if(espacios == reversa){
cout << "Es un Palindromo" << endl;
}
else{
cout << "No es palindromo" << endl;
}
return 0;
}