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: