summaryrefslogtreecommitdiffstats
path: root/inf/rtk/2021-šolsko-delo/dos/1.c
blob: 42b840287714ce49b9025a1dd644fd60f352ddd8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <stdio.h>

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