Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Programa Para Saber Si Una Cadena Es Palindrome Por: Jorge Chayan
- #include <iostream>
- using namespace std;
- void palindrome(int, int, string); //Metodo recursivo para saber si es palindrome
- int nospace(string *); //Funcion para desplazar espacios al final de la cadena
- int main()
- {
- string cadena;
- cout << "Ingrese Una Palabra: ";
- getline(cin, cadena);
- int n = nospace(&cadena);
- //Cadena.length()-n-1: La Longitud DE Cadena Menos El NULL Y La Cant. De Espacios Al Final
- palindrome(0, cadena.length()-n-1, cadena);
- cin.get();
- return 0;
- }
- int nospace(string *cadena) //Ademas De Modificar Por Referecia La Cadena, Devuelve "n"
- { //(Numero De Espacios Detectados En La Cadena)
- int n = 0;
- //Como Es Puntero, Se Debe Especificar Que Se Trata De La Pos[0] (unica fila):
- for (int i = 0; i < cadena[0].length(); i++)
- if (cadena[0][i] == ' ')
- {
- /*Cade Vez Que Haya Un Espacio Desplaza Toda La Cadena A Partir De Alli
- En Adelante:*/
- for (int j = i; j < cadena[0].length(); j++) cadena[0][j] = cadena[0][j+1];
- n++; //Cuenta Espacios
- }
- return n;
- }
- void palindrome(int a, int b, string cad)
- {
- //Si Hubo El Mismo Avance De Izq. A Der. Es Palindrome:
- if (a == b) cout << "\nEs Palindrome!";
- //Si coinciden: hacer llamado recursivo para la siguiente posicion (a+1 y b-1):
- else if (cad[a] == cad[b]) palindrome(++a, --b, cad);
- //Si No coinciden el algun momento: no es palindrome:
- else cout << "\nNo Es Palindrome!";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement