Determinare se una parola è palindroma in C

In questo esercizio scriveremo un programma in C per determinare se una parola inserita dall’utente è palindroma, cioè se è una parola che si può leggere allo stesso modo da sinistra verso destra e da destra verso sinistra, senza cambiare significato (es. oro, anna).

Per gestire l’input dell’utente utilizziamo lo specificatore di formato %s in modo da catturare l’intera parola inserita dall’utente e per assegnarla all’array, di tipo char, parola. La dimensione dell’array è definita a priori tramite la costante N, questo significa che, se l'utente inserisce più di N caratteri l’array va in overflow.

Una volta inserita la parola dobbiamo controllare che la prima metà della parola sia uguale, ma specchiata, alla seconda metà.
Utilizziamo la funzione strlen() per determinare la lunghezza della parola e usando un ciclo for con l’indice i che va da 0 a strlen( ) / 2 verifichiamo se:


  
    parola[i] != parola[strlen(parola)-1-i]


ovvero controlliamo se le lettere nelle due metà non corrispondono, cioè se la parola non è palindroma, perchè in questo modo chiamiamo la break che termina l’esecuzione del ciclo for. Facendo così possiamo controllare semplicemente se l’indice i è minore della metà della lunghezza della parola, e quindi si tratta di una parola non palindroma, altrimenti si tratta di una parola palindroma.

  
#include <stdio.h>
#include <string.h>
#define N 50

int main(){
    int i;
    char parola[N];
    printf("Inserisci una parola: ");
    scanf("%s", parola);

	for(i=0; i<strlen(parola)/2; i++){
        if(parola[i] != parola[strlen(parola)-1-i])
            break;
    }
    if(i<strlen(parola)/2)
        printf("La parola non è palindroma");
    else
        printf("La parola è palindroma");

	return 0;
}

Indice pagine linguaggio C: