Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/04/2011, 11:23
Gobix
 
Fecha de Ingreso: octubre-2010
Mensajes: 25
Antigüedad: 14 años, 2 meses
Puntos: 2
Pregunta Problemas al comparar una cadena

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
  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main(){
  7.  
  8.     string cadena; string espacios;
  9.     string reversa = "";
  10.     char signos[] = "+-*/ <>()[]{}¡!¿?#$%&_@·ºª.,;:";
  11.  
  12.  
  13.     cout << "BUCANDO PALINDROMOS" << endl << endl;
  14.     cout << "Escribe: "; getline(cin, cadena, '\n');
  15.     espacios = cadena;
  16.  
  17.  
  18.     for(short c = cadena.length(); c >= 0; c--){
  19.  
  20.         for(short j = 0; signos[j]; j++){ //Para eliminar los signos de arriba
  21.             if(cadena[c] == signos[j]){
  22.  
  23.                 espacios.erase(c, 1);
  24.  
  25.             }
  26.  
  27.         }
  28.  
  29.     }
  30.  
  31.     for(short c = espacios.length(); c >= 0; c--){
  32.  //Invirtiendo la cadena
  33.         reversa += espacios[c];
  34.     }
  35.  
  36.  
  37.         //AQUI EMPIEZA EL PROBLEMA
  38.     if(espacios == reversa){
  39.         cout << "Es un Palindromo" << endl;
  40.  
  41.     }
  42.  
  43.     else{
  44.  
  45.         cout << "No es palindromo" << endl;
  46.  
  47.     }
  48.  
  49.    
  50.  
  51.     return 0;
  52.  
  53. }