Hola ¿cómo están?,
¿Me podrán dar un poco de feedback sobre el siguiente código? (Adjunto programa)
#include <stdio.h>
typedef unsigned int uint;
int largoDeCadena(char *frase)
{
int largo = 0;
char *cptr = &frase[largo];
while (*cptr != false)
{
largo = largo + 1;
cptr = &frase[largo];
}
return largo;
}
bool esPalindromeIterativo(char *frase)
{
int largo = largoDeCadena(frase);
int posicion = 0;
bool verifica_que_sea_palindromo = true;
while (verifica_que_sea_palindromo && (posicion <= (largo - 1 - posicion)))
{
printf("%c : %c\n", frase[posicion], frase[(largo - 1 - posicion)]);
if (frase[posicion] != frase[(largo - 1 - posicion)])
{
verifica_que_sea_palindromo = false;
}
posicion++;
}
return verifica_que_sea_palindromo;
}
bool esPalindrome(char *frase)
{
int largo = largoDeCadena(frase);
if (largo == 0 || largo == 1)
{
return true;
}
else
{
if (frase[0] == frase[largo - 1])
{
if (largo == 2)
{
return true;
}
char nueva_frase[largo - 2];
for (int i = 1; i <= largo - 2; i++)
{
nueva_frase[i - 1] = frase[i];
}
esPalindrome(nueva_frase);
}
else
{
return false;
}
}
}
int main()
{
char *frase;
frase = new char;
printf("Ingresa la frase: ");
scanf("%[^\n]s", frase);
bool validation = esPalindrome(frase);
if (validation)
{
printf("La palabra: %s Si ES palindromo ", frase);
}
else
{
printf("La palabra: %s NO es palindromo ", frase);
}
return 0;
}
Mauricio.