diff --git a/a3/program.c b/a3/program.c new file mode 100644 index 0000000..c35de32 --- /dev/null +++ b/a3/program.c @@ -0,0 +1,74 @@ +#include + +int main() { + int n; + if (scanf("%d", &n) != 1 || n <= 0) { + puts("Nespravny vstup"); + return 1; + } + + char buf[100]; + fgets(buf, 100, stdin); + + char names[1000][100]; + int count = 0; + + while (fgets(buf, 100, stdin)) { + int len = 0; + while (buf[len]) len++; + while (len > 0 && (buf[len - 1] == '\n' || buf[len - 1] == '\r')) + buf[--len] = '\0'; + if (len == 0) break; + if (count < 1000) { + int i = 0; + while ((names[count][i] = buf[i])) i++; + count++; + } + } + + if (count == 0) { + puts("Ziadne prihlasky"); + return 1; + } + + char tmp[100]; + for (int i = 0; i < count - 1; i++) + for (int j = i + 1; j < count; j++) { + int k = 0; + while (names[i][k] && names[i][k] == names[j][k]) k++; + if (names[i][k] - names[j][k] > 0) { + int t = 0; + while ((tmp[t] = names[i][t])) t++; + t = 0; + while ((names[i][t] = names[j][t])) t++; + t = 0; + while ((names[j][t] = tmp[t])) t++; + } + } + + int unique = 1; + for (int i = 1; i < count; i++) { + int k = 0; + while (names[i][k] && names[i][k] == names[unique - 1][k]) k++; + if (names[i][k] != names[unique - 1][k]) { + int t = 0; + while ((names[unique][t] = names[i][t])) t++; + unique++; + } + } + count = unique; + + int accepted = (n < count) ? n : count; + + puts("Prijati studenti:"); + for (int i = 0; i < accepted; i++) + puts(names[i]); + + if (accepted < count) { + puts("Neprijati studenti:"); + for (int i = accepted; i < count; i++) + puts(names[i]); + } + + return 0; +} \ No newline at end of file