#include #include #include // Štruktúra reprezentujúca jedného študenta typedef struct { char meno[100]; // Meno študenta int hlasy; // Počet hlasov } Student; // Funkcia na porovnávanie študentov pre qsort int porovnaj(const void *a, const void *b) { const Student *studentA = (const Student *)a; const Student *studentB = (const Student *)b; // Ak majú rôzny počet hlasov, zoradíme ich zostupne if (studentA->hlasy != studentB->hlasy) { return studentB->hlasy - studentA->hlasy; } else { // Ak majú rovnaký počet hlasov, zoradíme ich podľa mena vzostupne return strcmp(studentA->meno, studentB->meno); } } int main() { // Deklarácia poľa študentov Student studenti[1000]; // Predpokladáme, že môže byť maximálne 1000 študentov int pocetStudentov = 0; // Načítanie hlasov char riadok[200]; while (fgets(riadok, sizeof(riadok), stdin) != NULL) { // Načítanie počtu hlasov a mena študenta z riadka int hlasy; char meno[100]; if (sscanf(riadok, "%d %[^\n]", &hlasy, meno) != 2) { fprintf(stderr, "Chyba pri nacitani hlasov z riadku.\n"); return 1; } // Prehľadanie existujúcich študentov, či už sme nejakého načítali int najdeny = 0; for (int i = 0; i < pocetStudentov; i++) { // Ak sme našli študenta s rovnakým menom, pridáme k jeho počtu hlasov if (strcmp(studenti[i].meno, meno) == 0) { studenti[i].hlasy += hlasy; najdeny = 1; break; } } // Ak sme nenašli existujúceho študenta s rovnakým menom, pridáme nového if (!najdeny) { strcpy(studenti[pocetStudentov].meno, meno); studenti[pocetStudentov].hlasy = hlasy; pocetStudentov++; } } // Ak sme nedostali žiadne hlasy, vypíšeme chybovú správu if (pocetStudentov == 0) { fprintf(stderr, "Neboli zadane ziadne hlasy.\n"); return 1; } // Zoradenie študentov podľa počtu hlasov a mena qsort(studenti, pocetStudentov, sizeof(Student), porovnaj); // Výpis výsledkov printf("Vysledky:\n"); for (int i = 0; i < pocetStudentov; i++) { printf("%d %s\n", studenti[i].hlasy, studenti[i].meno); } return 0; }