/* pali.c */ /* Tutkitaan onko jono palindormi vaiko ei /vl-94 */ #include #include /******************************************************************/ int onko_palindromi(char jono[]) /* Funktio palauttaa 1 mik„li jono on palindromi 0 muuten ------------------------------------------------------------- Algoritmi: Aloitetaan jonon 1. ja viimeisest„ kirjaimesta Verrataan ko. kirjaimia Jos erit, niin lopetetaan, ei ole muuten siirryt„„n yksi sis„„np„in ja jatketaan vertaamista kunnes kaikki kirjaimet testattu Oli palindromi 0. alku = 0, loppu = jonon pituus-1 1. jos alku >= loppu niin palauta OLI 2. jos kirjaimet paikoissa alku ja loppu erit, niin palauta EI OLLUT 3. alku=alku+1 ja loppu=loppu-1 4. jatka 1 5. palauta OLI ------------------------------------------------------------- */ #if 0 /* Joko indekesill„: */ { int alku=0,loppu=strlen(jono)-1; while ( alku < loppu ) { if ( jono[alku] != jono[loppu] ) return 0; alku++; loppu--; } return 1; } #elif 0 /* Tai osoittimilla normaalisti: */ { const char *alku = jono, *loppu = jono+strlen(jono)-1; while ( alku < loppu ) { if ( *alku != *loppu ) return 0; alku++; loppu--; } return 1; } #else /* Tai osoittimilla C-m„isesti: */ { const char *alku = jono,*loppu = jono+strlen(jono)-1; while ( alku < loppu ) if ( *alku++ != *loppu-- ) return 0; return 1; } #endif int main(void) { printf("Onko %d\n",onko_palindromi("saippuakauppias")); printf("Onko %d\n",onko_palindromi("shamppookauppias")); return 0; }