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.
Sito: 7ecnologie
Sezione: 08. C language
Capitolo: 05. Esercizi svolti
Paragrafo: 12. Tipo char
Indice dei capitoli: 00. Risorse - 01 Ambiente di sviluppo - 02. Introduzione al C - 03. Le librerie - 04. Tutorial - 05. Esercizi svolti - 98. Esercizi
Indice dei paragrafi: 01. printf e scanf - 02. Swap di variabili - 03. if - 04. Numeri pari - 05. if/else - 06. while - 07. Controllo dell'input - 08. for - 09. Operatore % - 10. Funzioni - 11. Tipo float - 12. Tipo char - 13. Stringhe - 14. File