vk496 me temo que no se absolutamente nada de Bash
pero gracias por la respuesta y me alegro que te resulte interesante mi propuesta
Eferion, he seguido algunos de tus consejos, y ahora me avisa de cuando es un palíndromo, pero si pongo una cadena/palabra que no lo es no me dice nada. He conseguido avanzar a que me diga cuando sí lo es, pero no consigo hacer que me diga cuando no.
Antes de ponerte el código actual, decirte que estoy siguiendo un manual pues aún no se mucho (como habrás notado), por eso no he usado el último consejo que me has dicho, pues aún no he llegado a eso, y la clase string, me temo que tampoco la he dado aún.
Bueno, dejo el código actual, para ver si alguien ve mi fallo, agradezco mucho las respuestas de verdad, aunque me gustaría que no solo me digáis lo que debo poner o quitar, sino que me intentéis explicar más o menos. el por qué falla como lo tengo, para así saber porque no funciona y evitar que ese fallo me suceda en más ocasiones.
rir3760 la verdad es que no se qué es size_t,´soy bastante nuevo y solo sé lo que he estudiado en el manual que leo, y no he visto nada de eso, por lo que no he entendido nada
Dicho esto..
#include <iostream>
#include <cstring>
using namespace std;
bool palindromo(char cadena[100]);
int main(){
char cadena[100];
cout << "Introduzca una palabra o cadena de ellas sin utilizar espacios y/o" << endl;
cout << " mayusculas, minusculas, acentos, etc. El programa le dira si la" << endl;
cout << " cadena introducida es un palindromo."<< endl;
cin >> cadena;
cin.get();
if (palindromo(cadena)) cout<< "Es un palindromo.";
else cout<< " No es un palindromo.";
cin.get();
return 0;
}
bool palindromo(char cadena[100])
{
bool esPalindromo = true;
int j = strlen(cadena)-1;
int k = 0;
do{
if (cadena[k]!=cadena[j]){
esPalindromo = false;
}
else {
k++;
j--;
}
} while(k < j && palindromo);
if (esPalindromo) return true;
else return false;
}
Vale, ya me he dado cuenta del error, el fallo estaba en la línea 57
} while(k < j && palindromo);
No es eso lo que debo poner, sino
} while(k < j && esPalindromo);
Al hacer ese pequeño cambio ya funciona todo correctamente, aunque si alguien me pudiera explicar por qué no hacía nada, porque entiendo que diera fallo, pero no que no saliera nada