/* Launo Tuuri --- C-ohj (Taina) s97 ------ Laskarit 4 Tehtävä 5 */ #include #include #include #define MAXRIV 255 static char palindromi[MAXRIV]; static int pituus(char s[]) { int i; for (i=0; s[i]; ++i); return i; } static void ympari(char *merkit, int p) { int i, apu; for (i=0; i<=(p/2); ++i) { apu = merkit[i]; merkit[i] = merkit[p - i]; merkit[p - i] = apu; } } static int onko_kirjain(int a) { if ((a>64 && a<91) || (a>96 && a<123)) /* A...Z, a...z */ return 1; if (a == 196 || a == 197 || a == 214 || /* skandit */ a == 228 || a == 229 || a == 246) return 1; return 0; } static int lue_rivista(char *ri, int raja) /* lue pelkät kirjainmerkit */ { int c, i = 0; while (i < raja && (c = getchar()) != EOF && c != '\n') { if (onko_kirjain(c)) { ri[i] = tolower(c); /* muuttaen isot pieniksi */ ++i; } } ri[i] = '\0'; if (c == '\n' && i == 0) ++i; return i; } static int etsi_palindr(char *ri, int p) { int i, j, vas, oik, loytyiko = 0; char a[MAXRIV], b[MAXRIV]; for (vas=0; vas pituus(palindromi)) strcpy(palindromi, a); } } return loytyiko; } int main() { int pit; char rivi[MAXRIV]; while ((pit = lue_rivista(rivi, MAXRIV)) > 0) { if (pit>2 && etsi_palindr(rivi, pit)) { printf("%s\n", palindromi); palindromi[0] = '\0'; } } return 0; }