diff --git a/a3/program.c b/a3/program.c new file mode 100644 index 0000000..88e29e2 --- /dev/null +++ b/a3/program.c @@ -0,0 +1,79 @@ +#include +#include +#include + +#define SIZE 1024 + +int compare(const void* arg1, const void* arg2) { + char* s1 = *((char**)arg1); + char* s2 = *((char**)arg2); + return strcmp(s2, s1); +} + +int main() { + int max_prijatych = 0; + if (scanf("%d\n", &max_prijatych) != 1 || max_prijatych <= 0) { + puts("Nespravny vstup"); + return 1; + } + + char* mena[SIZE]; + memset(mena, 0, SIZE * sizeof(char*)); + int pocet_mien = 0; + + char line[SIZE]; + while (pocet_mien < SIZE) { + memset(line, 0, SIZE); + + char* r = fgets(line, SIZE, stdin); + if (r == NULL) break; + + int pocet_znakov = strlen(line); + if (pocet_znakov <= 1) break; + + if (line[pocet_znakov - 1] == '\n') { + line[pocet_znakov - 1] = '\0'; + pocet_znakov--; + } + + int najdene = 0; + for (int i = 0; i < pocet_mien; i++) { + if (strcmp(mena[i], line) == 0) { + najdene = 1; + break; + } + } + + if (!najdene) { + mena[pocet_mien] = malloc(pocet_znakov); + memcpy(mena[pocet_mien], line, pocet_znakov + 1); + pocet_mien++; + } + } + + if (pocet_mien == 0) { + puts("Ziadne prihlasky"); + return 1; + } + + qsort(mena, pocet_mien, sizeof(char*), compare); + + puts("Prijati studenti:"); + int prijatych = (max_prijatych < pocet_mien) ? max_prijatych : pocet_mien; + for (int i = 0; i < prijatych; i++) { + puts(mena[i]); + } + + if (pocet_mien > max_prijatych) { + puts("Neprijati studenti:"); + for (int i = max_prijatych; i < pocet_mien; i++) { + puts(mena[i]); + } + } + + for (int i = 0; i < pocet_mien; i++) { + free(mena[i]); + } + + return 0; +}