Hola ¿Cómo están?
Con respecto a la pregunta "¿Qué diferencias hay entre esta representación y la que utilizó en el Ejercicio 3?" ,
¿Puede ser que la respuesta sea la siguiente?
En el ejercicio anterior se implementó como char frase[100] y eso implica que ya se define (de manera estática) el especio en memoria. En cambio, en este ejercicio se define como puntero, por ende el espacio de memoria se creará de manera dinámica en tiempo de ejecución.
Con respecto a la parte b, logré hacer el ejercicio y para la mayoría de pruebas funciona bien. Para algunas pruebas cómo por ejemplo "aji traga la al agart ija" el programa se comporta de manera extraña y no se ejecuta o bien la función scanf no funciona del todo bien. Sin embargo, para la palabra "aji come emoc ija" si funciona.
¿Por dónde vendrá el error? (uso visualStudioCode y compilo y ejecuto con RUN Code (extensión))
Adjunto código:
#include <stdio.h>
int largoDeCadena(char *frase)
{
int largo = 0;
char *cptr = &frase[largo];
while (*cptr != false)
{
largo = largo + 1;
cptr = &frase[largo];
}
return largo;
}
bool esPalindrome(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;
}
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;
}
Saludos,
Mauricio.