#include #include #include // Porovnávací funkcia pre qsort int porovnaj_mena(const void *a, const void *b) { return strcmp(*(const char **)a, *(const char **)b); } int main() { int pocet_prijatych; // Načítanie počtu študentov na prijatie if (scanf("%d", &pocet_prijatych) != 1 || pocet_prijatych <= 0) { puts("Nespravny vstup"); return 1; } // Pole pre zoznam mien študentov char **zoznam = malloc(pocet_prijatych * sizeof(char *)); if (zoznam == NULL) { puts("Chyba alokacie pamäte"); return 1; } int pocet_prihlasok = 0; // Načítanie zoznamu prihlášok while (1) { char meno[101]; if (scanf("%100s", meno) != 1) { puts("Chyba pri citani vstupu"); free(zoznam); return 1; } // Koniec zoznamu prihlášok if (meno[0] == '\0') { break; } // Zmena veľkosti poľa, ak už nie je dosť miesta if (pocet_prihlasok >= pocet_prijatych) { pocet_prijatych *= 2; char **nove_zoznam = realloc(zoznam, pocet_prijatych * sizeof(char *)); if (nove_zoznam == NULL) { puts("Chyba alokacie pamäte"); free(zoznam); return 1; } zoznam = nove_zoznam; } // Uloženie mena do zoznamu zoznam[pocet_prihlasok] = strdup(meno); if (zoznam[pocet_prihlasok] == NULL) { puts("Chyba alokacie pamäte"); free(zoznam); return 1; } pocet_prihlasok++; } // Kontrola, či boli prihlásení nejakí študenti if (pocet_prihlasok == 0) { puts("Ziadne prihlasky"); free(zoznam); return 1; } // Usporiadanie zoznamu mien podľa abecedy qsort(zoznam, pocet_prihlasok, sizeof(char *), porovnaj_mena); // Vypísanie prijatých študentov puts("Prijati studenti:"); for (int i = 0; i < pocet_prijatych && i < pocet_prihlasok; i++) { printf("%s\n", zoznam[i]); } // Vypísanie neprijatých študentov if (pocet_prihlasok > pocet_prijatych) { puts("Neprijati studenti:"); for (int i = pocet_prijatych; i < pocet_prihlasok; i++) { printf("%s\n", zoznam[i]); } } // Uvoľnenie pamäte for (int i = 0; i < pocet_prihlasok; i++) { free(zoznam[i]); } free(zoznam); return 0; }