#include #include #include #define SIZE 100 int porovnaj_mena(const void *a, const void *b) { const char *s1 = *((const char **)a); const char *s2 = *((const char **)b); return strcmp(s1, s2); } int main() { char *pole_smernikov[SIZE]; memset(pole_smernikov, 0, SIZE * sizeof(char *)); int pocet_mien_v_poli = 0; char riadok[SIZE]; char *r = fgets(riadok, SIZE, stdin); while (r != NULL && riadok[0] != '\n') { int pocet_znakov = strlen(riadok) - 1; // Odstránenie konca riadka // Kontrola, či sa meno už nachádza v poli smerníkov int najdene = 0; for (int i = 0; i < pocet_mien_v_poli; i++) { if (memcmp(pole_smernikov[i], riadok, pocet_znakov) == 0) { najdene = 1; break; } } // Ak sa meno nenachádza v poli, pridáme ho if (!najdene) { pole_smernikov[pocet_mien_v_poli] = malloc(pocet_znakov + 1); if (pole_smernikov[pocet_mien_v_poli] == NULL) { puts("Chyba alokacie pamate"); return 1; } memcpy(pole_smernikov[pocet_mien_v_poli], riadok, pocet_znakov); pole_smernikov[pocet_mien_v_poli][pocet_znakov] = '\0'; // Nulový ukončovač reťazca pocet_mien_v_poli++; } r = fgets(riadok, SIZE, stdin); } // Triedenie zoznamu mien qsort(pole_smernikov, pocet_mien_v_poli, sizeof(char *), porovnaj_mena); // Vypísanie zotriedených mien for (int i = 0; i < pocet_mien_v_poli; i++) { printf("%s\n", pole_smernikov[i]); } // Uvoľnenie pamäte for (int i = 0; i < pocet_mien_v_poli; i++) { free(pole_smernikov[i]); } return 0; }