#include int Izenaceno (char * s) { /* 0 ce ni izenaceno, 1, ce je izenaceno */ int c = 0; /* pozicija na nizu */ int k = 0; /* razlika med stevilom xov */ while (s[c] != '\0') { /* hodimo po nizu O(n) */ switch (s[c]) { /* pregledamo znak */ case 'x': k++; /* povecamo relativno stevilo xov */ break; case 'o': k--; /* zmanjsamo relativno stevilo xov */ break; default: /* ni niti o niti x */ return 0; } if (c >= 2 /* ce sta vsaj dva znakam, da preprecimo segmentation violation */ && s[c] == s[c-1] && s[c] == s[c-2]) /* ce so trije po vrsti enaki */ return 0; c++; } if (k != 0) /* ce xov ni enako kot ojev */ return 0; return 1; } #if __INCLUDE_LEVEL__ == 0 /* da je lahko podprogram uporabljen kot knjiznica */ int main (int argc, char ** argv) { if (argc != 1+1) { fprintf(stderr, "uporaba: %s niz\n", argv[0]); /* potrebujemo vhodni niz */ return 1; /* napaka */ } fprintf(stderr, "zaporedje %s izenaceno\n", Izenaceno(argv[1]) ? "je" : "ni"); /* posredujemo odgovor podprograma */ return 0; } #endif