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[trlen(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: