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; }
- Programmazione