Dada una cadena, haga un algoritmo que compruebe si es un palíndromo.
Un palíndromo es una palabra, número o frase que se lee igual adelante que atrás.

#include <iostream>
// se incluye la clase Polindromo para despues llamar a sus métodos
#include "Polindromo.h"
using namespace std;
int main(void)
{
// se crea un objeto de la clase Polindromo (Instanciación)
Polindromo *obj = new Polindromo();
string cadena;
// pedimos la cadena
cout << "Digite la cadena" << endl;
cout << ">> ";
cin >> cadena;
// encapsulamos la variable cadena
obj->setCadena(cadena);
// si el método de validar retorna true
if (obj->validar())
{
// entonces, se muestra en pantalla indicando que SI es un palíndromo la cadena
cout << "La cadena '" << obj->getCadena() << "' es un palindromo." << endl;
}
else
{
// sino, se muestra en pantalla indicando que NO es un palíndromo la cadena
cout << "La cadena '" << obj->getCadena() << "' no es un palindromo." << endl;
}
}
#ifndef POLINDROMO_H
#define POLINDROMO_H
#include <iostream>
using namespace std;
class Polindromo
{
public:
Polindromo();
virtual ~Polindromo();
// se declaran los métodos publicos
void setCadena(string val);
string getCadena();
bool validar();
protected:
private:
// se declara un atributo privado
string cadena;
};
#endif // POLINDROMO_H
#include "Polindromo.h"
Polindromo::Polindromo()
{
// se le asigna un valor por defecto al atributo de la clase en el constructor
cadena = "";
}
Polindromo::~Polindromo()
{
//dtor
}
// método Set y Get del atributo de la clase
void Polindromo::setCadena(string val)
{
cadena = val;
}
string Polindromo::getCadena()
{
return cadena;
}
// método para validar si la cadena es un palíndromo
bool Polindromo::validar()
{
// inicializo una variable de tipo entero llamada tam , en la longitud de la cadena
int tam = getCadena().length();
// inicializo un vector de tipo char con el tamaño del valor de la variable tam
char caracter[tam];
// inicializo una variable booleana llamada existe , en false
bool existe = false;
// recorro con el ciclo for para asignarle en cada posicion del vector una letra de la cadena
for (int i = 0; i < tam; i++)
{
// en la posicion i del vector caracter se le asignara el caracter de la posicion i de la cadena
caracter[i] = cadena[i];
}
// recorremos otra ves el vector para validar
for (int j = 0; j < tam; j++)
{
// si el caracter de la posicion i es igual al caracter de la posicion (tam-i-j)
if (caracter[j] == caracter[(tam-1)-j])
{
// entonces le asignamos a la variable existe el valor de true
existe = true;
}
else
{
// sino retornamos false
return false;
}
}
// retornamos el valor de la variable existe
return existe;
}
// se importa paquete JOptionPane para dibujar un cuadro de dialogo en pantalla
// que muestre información o para llenar información
import javax.swing.JOptionPane;
public class Main
{
public static void main(String[] args)
{
// creamos un objeto de la clase Palindromo (Instanciación)
Palindromo obj = new Palindromo();
// pedimos la cadena
String cadena = JOptionPane.showInputDialog("Digite la cadena:");
// encapsulamos la cadena
obj.setCadena(cadena);
// si el método de validar retorna true
if (obj.validar())
{
// entonces, se muestra en pantalla indicando que SI es un palíndromo la cadena
JOptionPane.showMessageDialog(null, "La cadena '" + obj.getCadena() + "' es un palindromo.");
}
else
{
// sino, se muestra en pantalla indicando que NO es un palíndromo la cadena
JOptionPane.showMessageDialog(null, "La cadena '" + obj.getCadena() + "' no es un palindromo.");
}
}
}
public class Palindromo
{
// se declara un atributo privado
private String cadena;
public Palindromo()
{
// se le asigna un valor por defecto al atributo de la clase en el constructor
cadena = "";
}
// método Set y Get del atributo de la clase
public void setCadena(String val)
{
cadena = val;
}
public String getCadena()
{
return cadena;
}
// método para validar si la cadena es un palíndromo
public boolean validar()
{
// inicializo una variable de tipo entero llamada tam , en la longitud de la cadena
int tam = getCadena().length();
// inicializo un vector de tipo char con el tamaño del valor de la variable tam
char [] caracter = new char[tam];
// inicializo una variable booleana llamada existe , en false
boolean existe = false;
// recorro con el ciclo for para asignarle en cada posicion del vector una letra de la cadena
for (int i = 0; i < tam; i++)
{
// en la posicion i del vector caracter se le asignara el caracter de la posicion i de la cadena
caracter[i] = getCadena().charAt(i);
}
// recorremos otra ves el vector para validar
for (int j = 0; j < tam; j++)
{
// si el caracter de la posicion i es igual al caracter de la posicion (tam-i-j)
if (caracter[j] == caracter[(tam-1)-j])
{
// entonces le asignamos a la variable existe el valor de true
existe = true;
}
else
{
// sino retornamos false
return false;
}
}
// retornamos el valor de la variable existe
return existe;
}
}