A cura di: Administrator

  /*   * (Palindromi) Un palindromo è una stringa che si legge allo   * stesso modo da sinistra a destra e da destra a sinistra.   * Alcuni esempi di palindromi sono "radar", "able was i ere   * i saw elba" e "a man a plan a canal panama".   * Scrivete una funzione ricorsiva testPalindrome che restituisca   * 1, qualora la stringa immagazzinata nel vettore sia un palindromo,   * e 0 in caso contrario.   * La funzione dovrà ignorare gli spazi, la punteggiatura   * eventualmente presenti nella stringa.   *   */  #include <stdio.h>  int isalfa(char);  int testPalindrome(const char[]);  #define STRINGA "able was i   ere i saw elba   "  int  main(void)  {  	printf("La stringa "%s" ", STRINGA);  	if (!testPalindrome(STRINGA))  		printf("non ");  	printf("è un palindromon");  	return (0);  }  int  testPalindrome(const char s[]) {  	int left = 0, right = 0;  	/* determina la lunghezza della stringa */  	while (s[right] != '')  		right++;  	while (left <= right) {  	    if (isalfa(s[left])) {  		/* ignora spazi, punteggiatura a destra */  		right--;  		while (!isalfa(s[right]))  		    right--;  		/* minuscolo != MAIUSCOLO */  		if (s[left] != s[right])  			return 0; /* non e' un palindromo */      	    }  	    left++;  	}  	return 1; /* e' un palindromo */  }  /* restituisce 1 se un carattere [a-zA-Z], 0 altrimenti */  int  isalfa(char c)  {  	if ((c != ' ') && (c != ',') &&  	    (c != '.') && (c != ';') &&  	    (c != ':') && (c != 't') &&  	    (c != 'n'))  		return 1;  	else  		return 0;  }