Esercizio conversione testo e parola palindroma

di il
6 risposte

Esercizio conversione testo e parola palindroma

Ciao a tutti.
Sto cercando di risolvere un esercizio ma all'ultimo punto non ottengo il risultato sperato.


Testo del problema

Scrivere un programma in linguaggio C che riceve in ingresso una parola inserita da tastiera. Si consideri che la parola può contenere sia caratteri maiuscoli che caratteri minu- scoli, e complessivamente al massimo 30 caratteri. Il programma deve svolgere le seguenti operazioni:
• visualizzare la parola inserita;
• aggiornare la parola in modo che tutti i caratteri siano minuscoli. Il programma deve visualizzare la parola ottenuta;
• veri?care se la parola è palindroma. Una parola è palindroma se può essere letta indifferentemente da sinistra verso destra e da destra verso sinistra. Ad esempio, le seguenti parole sono palindrome: otto, madam.


Questo è il mio codice
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define MAXDIM 30

int main()
{
    char frase[MAXDIM+1];
    char n_frase[MAXDIM+1];
    int i,lung_frase;
    int flag=1;

    printf("Inserire una parola (non piu' di %d caratteri):\n", MAXDIM);
    gets(frase);
    printf("\n");
    printf("La parola e' %s", frase);
    lung_frase=strlen(frase);

    for (i=0;i<lung_frase;i++)
    {
        if (frase[i]>= 'A' && frase[i]<= 'Z')
        {
            n_frase[i]=tolower(frase[i]);
        }

        else
        {
            n_frase[i]=frase[i];
        }
    }

    n_frase[lung_frase]='\0';
    printf("\n\n");
    printf("La parola aggiornata e': %s\n", n_frase);

    for (i=0;i<lung_frase;i++)
    {
        if (n_frase[i]!= n_frase[lung_frase-1-i]);
        {
            flag=0;
        }
    }
    if (flag==0)
    {
        printf("\n\n\n");
        printf("La parola %s non e' palindroma\n", n_frase);
    }
    else if (flag==1)
    {
        printf("\n\n\n");
        printf("La parola %s e' palindroma\n", n_frase);
    }
    return 0;
}
Per i primi due punti tutto funziona alla perfezione.
Arrivato però al punto in cui il programma deve decidere se la parola è palindroma o meno non ottengo una risposta giusta.
Tramite debugging e watches ho notato che il flag rimane a zero sempre e comunque, quindi ottengo sempre risposta negativa.
Potreste aiutarmi per favore?

6 Risposte

  • Re: Esercizio conversione testo e parola palindroma

    In questa linea

    if (n_frase!= n_frase[lung_frase-1-i]);

    c'è un ; di troppo ... deve essere

    if (n_frase!= n_frase[lung_frase-1-i])
  • Re: Esercizio conversione testo e parola palindroma

    oregon ha scritto:


    In questa linea

    if (n_frase!= n_frase[lung_frase-1-i]);

    c'è un ; di troppo ... deve essere

    if (n_frase!= n_frase[lung_frase-1-i])

    Ci ho ragionato mezzora e alla fine era semplicemente un ";" in più
    Ora funziona, grazie per l'aiuto oregon, scusate se ho aperto un topic per un errore banale come quello
  • Re: Esercizio conversione testo e parola palindroma

    Di nulla ... capita. Ma molti compilatori adesso lo fanno notare ... ad esempio, con frasi simili

    warning C4390: ";": trovata istruzione controllata vuota. È ciò che si desidera?
  • Re: Esercizio conversione testo e parola palindroma

    oregon ha scritto:


    Di nulla ... capita. Ma molti compilatori adesso lo fanno notare ... ad esempio, con frasi simili

    warning C4390: ";": trovata istruzione controllata vuota. È ciò che si desidera?
    Ma infatti, solitamente, il mio compilatore mi segnala errori di questo tipo.
    Non so come mai questa volta non lo abbia fatto!


    Inviato dal mio iPhone utilizzando Tapatalk
  • Re: Esercizio conversione testo e parola palindroma

    Solo una cosa ... se scrivi

    if(test==0)

    basta l'else senza dover ripetere la if per l'altra condizione ...
  • Re: Esercizio conversione testo e parola palindroma

    oregon ha scritto:


    Solo una cosa ... se scrivi

    if(test==0)

    basta l'else senza dover ripetere la if per l'altra condizione ...
    Si è stata un'altra svista, grazie.


    Inviato dal mio iPhone utilizzando Tapatalk
Devi accedere o registrarti per scrivere nel forum
6 risposte