#include #include #include #define MAX_NAME_LENGTH 100 #define MAX_BUFFER_LENGTH 256 // Štruktúra pre uchovanie informácií o študentovi typedef struct { char name[MAX_NAME_LENGTH]; int votes; } Student; // Porovnávacia funkcia pre zoradenie študentov podľa počtu hlasov a mena int compare_students(const void *a, const void *b) { const Student *student_a = (const Student *)a; const Student *student_b = (const Student *)b; // Najprv porovnajte počet hlasov if (student_a->votes != student_b->votes) { return student_b->votes - student_a->votes; // Zoradiť zostupne } // Ak majú rovnaký počet hlasov, porovnajte podľa mena return strcmp(student_a->name, student_b->name); } int main() { // Inicializácia poľa študentov Student students[MAX_BUFFER_LENGTH]; int num_students = 0; // Načítanie hlasov zo štandardného vstupu char buffer[MAX_BUFFER_LENGTH]; while (fgets(buffer, sizeof(buffer), stdin) != NULL) { // Načítajte počet hlasov a meno študenta char *token = strtok(buffer, "\x20"); if (token == NULL) { fprintf(stderr, "Chyba: Neplatný formát vstupu.\n"); return 0; } int votes = atoi(token); token = strtok(NULL, "\n"); if (token == NULL) { fprintf(stderr, "Chyba: Neplatný formát vstupu.\n"); return 0; } char name[MAX_NAME_LENGTH]; strncpy(name, token, MAX_NAME_LENGTH); // Uložte študenta do poľa strncpy(students[num_students].name, name, MAX_NAME_LENGTH); students[num_students].votes = votes; num_students++; // Kontrola prekročenia maximálnej veľkosti poľa študentov if (num_students >= MAX_BUFFER_LENGTH) { fprintf(stderr, "Chyba: Príliš veľa študentov.\n"); return 0; } } // Ak neboli načítané žiadne dáta, vypíšte chybovú správu if (num_students == 0) { fprintf(stderr, "Chyba: Žiadne záznamy načítané.\n"); return 0; } // Zoradenie študentov podľa počtu hlasov a mena qsort(students, num_students, sizeof(Student), compare_students); // Výpis výsledkov printf("Vysledky:\n"); for (int i = 0; i < num_students; i++) { printf("%d %s\n", students[i].votes, students[i].name); } return 0; }