/* Malliratkaisu 1. v„likokeen teht„v„„n 4 C-kielell„: Algoritmi: Kokeillaan 2. jonoa jokaiseen 1. jonon mahdolliseen paikkaan. Mik„li jollakin kokeilulla tulee palindromi, lopetetaan -> tule palin. Ei tule palindromia Vesa Lappalainen 20.3.1992 */ #include #include #include #include "mjonot.h" #define NUL 0 void laita_jono(char jono1[],int paikka,char jono2[],char tulos[]) /* 0123456 Kissa kana paikka=2 ^ -> Kikanassa */ { kopioi_jono(tulos,paikka+1,jono1); strcat(tulos,jono2); strcat(tulos,jono1+paikka); } int onko_palindromi(char jono[]) /* Funktio palauttaa 1 mik„li jono on palindromi 0 muuten */ { int alku=0,loppu=strlen(jono)-1; while ( alku < loppu ) { if ( jono[alku] != jono[loppu] ) return 0; alku++; loppu--; } return 1; } int tuleeko_pali(char jono1[],char jono2[]) /* Funktio palauttaa 1 jos jono1 tulee palindromi, mik„li jono2 liitet„„n siin„ oikeaan kohtaan. 0 muuten */ { int paikka=0, pituus = strlen(jono1); char *tulos = malloc(pituus+strlen(jono2)+1); while (paikka <= pituus) { laita_jono(jono1,paikka,jono2,tulos); if (onko_palindromi(tulos)) { free(tulos); return 1; } paikka++; } /* paikka <= pituus */ free(tulos); return 0; } int main(void) { char jono1[30], jono2[20]; int onko_pali; do { printf("Anna 1. jono >"); lue_jono(N_S(jono1)); printf("Anna 2. jono >"); lue_jono(N_S(jono2)); onko_pali = tuleeko_pali(jono1,jono2); printf("Jonot = |%s| |%s| Palindromi %d.\n",jono1,jono2,onko_pali); } while (jono2[0]!=0); return 0; }