#include #include #include #define SIZE 100 // Veľkosť pomocného poľa pre načítanie riadku // Definícia štruktúry pre študenta struct student { char name[50]; int votes; }; // Funkcia na porovnanie študentov pri triedení int compare(const void *s1, const void *s2) { struct student *student1 = (struct student *)s1; struct student *student2 = (struct student *)s2; // Ak majú rôzny počet hlasov, porovnáme podľa počtu hlasov if (student1->votes != student2->votes) { return student2->votes - student1->votes; // Zoradenie zostupne podľa počtu hlasov } else { // Ak majú rovnaký počet hlasov, porovnáme podľa abecedy return strcmp(student1->name, student2->name); } } int main() { struct student students[100]; // Pole pre ukladanie študentov int num_students = 0; // Počet načítaných študentov // Načítanie hlasov zo vstupu while (1) { int votes; char name[50]; char line[SIZE]; // Načítame riadok zo vstupu memset(line, 0, SIZE); char* r = fgets(line, SIZE, stdin); if (r == NULL) { // Koniec vstupu break; } // Načítame hlas a meno študenta zo vstupného riadku if (sscanf(line, "%d %49[^\n]", &votes, name) == 2) { // Ak sme načítali záznam úspešne, pridáme študenta do databázy strcpy(students[num_students].name, name); students[num_students].votes = votes; num_students++; } else { // Ak sa nepodarilo načítať, skončíme načítavanie printf("CHYBA: Neplatny zapis na riadku.\n"); return 1; } } // Ak sme načítali aspoň jedného študenta, zoradíme ich podľa počtu hlasov a mena if (num_students > 0) { qsort(students, num_students, sizeof(struct student), compare); // 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); } } else { // Ak sme nenenačítali žiadneho študenta, vypíšeme chybovú správu printf("CHYBA: Ziadny zaznam na vstupe.\n"); } return 0; }