diff --git a/cv10/program.c b/cv10/program.c index 36ff85a..ef41b2c 100644 --- a/cv10/program.c +++ b/cv10/program.c @@ -2,50 +2,71 @@ #include #include -#define MAX_LENGTH 100 // Maximálna dĺžka mena študenta -#define MAX_STUDENTS 100 // Maximálny počet študentov - -int compare(const void *a, const void *b) { - return strcmp(*(char **)a, *(char **)b); -} - int main() { - char prihlasky[MAX_STUDENTS][MAX_LENGTH]; // Pole pre uloženie prihlášok - int max_prijati, pocet_prihlasek = 0; + int count; + char buffer[100]; + char **applications; + int i, j; - // Načítanie maximálneho počtu študentov na prijatie - if (scanf("%d", &max_prijati)!= 1 || max_prijati <= 0) { + if (scanf("%d", &count) != 1 || count <= 0) { printf("Nespravny vstup\n"); return 1; } - // Načítanie zoznamu prihlášok - while (scanf("%s", prihlasky[pocet_prihlasek]) == 1) { - pocet_prihlasek++; + applications = (char **)malloc(count * sizeof(char *)); + if (!applications) { + printf("Chyba pri alokacii pamate\n"); + return 1; } - // Kontrola, či neboli načítané žiadne prihlášky - if (pocet_prihlasek == 0) { + i = 0; + while (scanf("%s", buffer) == 1 && strcmp(buffer, "") != 0) { + int found = 0; + for (j = 0; j < i; j++) { + if (strcmp(applications[j], buffer) == 0) { + found = 1; + break; + } + } + if (!found) { + applications[i] = strdup(buffer); + i++; + } + } + + if (i == 0) { printf("Ziadne prihlasky\n"); return 1; } - // Zoradenie zoznamu prihlášok podľa abecedy - qsort(prihlasky, pocet_prihlasek, MAX_LENGTH, compare); - - // Výber študentov na prijatie podľa abecedy a maximálneho počtu - printf("Prijati studenti:\n"); - for (int i = 0; i < max_prijati && i < pocet_prihlasek; i++) { - printf("%s\n", prihlasky[i]); - } - - // Výpis neprijatých študentov - if (max_prijati < pocet_prihlasek) { - printf("Neprijati studenti:\n"); - for (int i = max_prijati; i < pocet_prihlasek; i++) { - printf("%s\n", prihlasky[i]); + // Sort the applications alphabetically + for (int m = 0; m < i - 1; m++) { + for (int n = m + 1; n < i; n++) { + if (strcmp(applications[m], applications[n]) > 0) { + char *temp = applications[m]; + applications[m] = applications[n]; + applications[n] = temp; + } } } + printf("Prijati studenti:\n"); + for (j = 0; j < (count < i ? count : i); j++) { + printf("%s\n", applications[j]); + } + + if (count < i) { + printf("Neprijati studenti:\n"); + for (; j < i; j++) { + printf("%s\n", applications[j]); + } + } + + // Free allocated memory + for (j = 0; j < i; j++) { + free(applications[j]); + } + free(applications); + return 0; -} \ No newline at end of file +}