diff --git a/cv10/program.c b/cv10/program.c index 34581e7..164d408 100644 --- a/cv10/program.c +++ b/cv10/program.c @@ -1,63 +1,49 @@ #include +#include #include -#define MAX_STUDENTS 100 -#define NAME_SIZE 50 +#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(*(const char **)a, *(const char **)b); +} int main() { - int max_students, num_accepted = 0, num_students = 0; - char names[MAX_STUDENTS][NAME_SIZE]; - char temp_name[NAME_SIZE]; + char prihlasky[MAX_STUDENTS][MAX_LENGTH]; // Pole pre uloženie prihlášok + int max_prijati, pocet_prihlasek = 0; - scanf("%d", &max_students); - if (max_students <= 0 || max_students > MAX_STUDENTS) { + // Načítanie maximálneho počtu študentov na prijatie + if (scanf("%d", &max_prijati) != 1 || max_prijati <= 0) { printf("Nespravny vstup\n"); return 1; } - memset(names, 0, sizeof(names)); - - while (fgets(temp_name, sizeof(temp_name), stdin)!= NULL && num_accepted < max_students) { - temp_name[strcspn(temp_name, "\n")] = '\0'; - - int i, found = 0; - - for (i = 0; i < num_accepted; i++) { - if (strcmp(names[i], temp_name) == 0) { - found = 1; - break; - } - } - - if (!found) { - strcpy(names[num_accepted], temp_name); - num_accepted++; - } - num_students++; + // Načítanie zoznamu prihlášok + while (scanf("%s", prihlasky[pocet_prihlasek]) == 1) { + pocet_prihlasek++; } - if (num_accepted == 0) { - printf("Ziadne prihlasky"); - } else { - printf("Prijati studenti:"); - for (int i = 0; i < num_accepted; i++) { - printf("%s\n", names[i]); - } - printf("%d1",num_accepted); - printf("%d2",num_students); + // Kontrola, či neboli načítané žiadne prihlášky + if (pocet_prihlasek == 0) { + printf("Ziadne prihlasky\n"); + return 1; + } - if (num_students > num_accepted) { - printf("Neprijati studenti:"); - for (int i = 0; i < num_students; i++) { - strcpy(temp_name, names[i]); - int found = 0; - for (int j = 0; j < num_accepted; j++) { - if (strcmp(names[j], temp_name) == 0) { - found = 1; - break; - } - } - } + // Zoradenie zoznamu prihlášok podľa abecedy + qsort(prihlasky, pocet_prihlasek, sizeof(prihlasky[0]), 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]); } }