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?