Ejercicio 4 | Palindromo

Ejercicio 4 | Palindromo

de Mauricio Costanzo Silveira -
Número de respuestas: 3

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.



En respuesta a Mauricio Costanzo Silveira

Re: Ejercicio 4 | Palindromo

de Lucas Fernandez Corbo -
Buenas, estuve probando el código en las pc de la fing y el input 'aji traga la al agart ija' me anduvo bien, simplemente queda cortado el print que pusiste porque la condición del while da false en cierta posición. Lo que si no va a funcionar es para frases como 'ana lava lana'Prueba 
En respuesta a Lucas Fernandez Corbo

Re: Ejercicio 4 | Palindromo

de Mauricio Costanzo Silveira -
Lucas ¿Cómo estás?

Muchas gracias por probar el código en la pc de la fing.

Con respecto a la frase "ana lava lana" estaría bien que no sea palíndromo. Ya que los espacios en blanco (" ") hacen que tenga otro sentido:

-------------------
ana lava lana
        !=
anal aval ana
-------------------

¿Qué te parece a tí?

Saludos,
Mauricio.
En respuesta a Mauricio Costanzo Silveira

Re: Ejercicio 4 | Palindromo

de Antonela Bertolami Etcheverry -
Hola Mauricio,

Estuve viendo lo que hiciste y no me queda claro cómo mides el largo de la frase.
Vas asignándole a *cptr la dirección de memoria de frase[largo] y mientras sea distinto de false vas sumando el largo.
Lo que no entiendo es por qué *cptr sería false (un booleano) al pasarte del largo. Disculpa por la pregunta que capaz es más conceptual que relacionada con el ejercicio!

Saludos,
Antonela.