12. Tipo char

Esercizio

Acquisire una parola o più parole e verificare se si tratta di un palindromo. Terminare con <INVIO>.


Nota:

Assumere che la parola più lunga sia di 64 caratteri.


Un palindromo è una parola che può essere letta indifferentemente da destra a sinistra o viceversa. Ad esempio sono palindromi anna e motom.

Esempio di esecuzione:


Inserire una o piu' parole e terminare con <INVIO>

anna

Il testo e' palindromo

Svolgimento


#include <stdio.h>

int main()

{

char testo[64];

int i, j, palindromo;


printf("Inserire una o piu' parole e terminare con <INVIO>\n");


i=0;

do {

testo[i]=getchar();

i++;

} while (testo[i-1]!='\n' && i<64);


i--;


j=0;

palindromo=1;

while (j<=i/2){

if (testo[j]!=testo[i-j-1])

palindromo=0;

j++;

}


if (palindromo)

printf("Il testo e' palindromo\n");

else

printf("Il testo non e' palindromo\n");


return 0;

}

Commento

Per verificare se il testo è palindromo è indispensabile conservare l'intero testo. A tale scopo i caratteri sono acquisiti in un array la cui dimensione è fissata a 64, come indicato nella traccia.

Il ciclo di lettura termina in corrispondenza dell'invio o se si raggiunge il limite di 64.

L'indice porta il conteggio dei caratteri acquisiti. Al termine è decrementato di uno perché tra i caratteri c'è anche \n, che va escluso dall'analisi.

L'istruzione if (testo[j]!=testo[i-j-1]) confronta inizialmente i caratteri alle estremità sinistra e destra. Infatti inizialmente j vale 0 e quindi sono confrontati i caratteri testo[0] (primo carattere acquisito) e testo[i-1] (ultimo carattere significativo).

A mano a mano che j incrementa il valore ci si sposta ai caratteri successivi sia da sinistra che da destra.