#include #include #include #include #define SIZE 100 struct student { char name[SIZE]; int votes; }; int find_student_name(struct student* students, int size, const char* name) { for (int l = 0; l < size; l = l + 1) { if (strcmp(students[l].name, name) == 0) { return l; } } return -1; } int funkcia_compare(const void* p1, const void* p2) { const struct student* s1 = (const struct student*)p1; const struct student* s2 = (const struct student*)p2; if (s1->votes != s2->votes) { return s2->votes - s1->votes; } return strcmp(s1->name, s2->name); } int main() { struct student databaza[SIZE]; memset(databaza, 0, SIZE * sizeof(struct student)); int rozmer = 0; char line[SIZE]; while (fgets(line, SIZE, stdin)) { char* end = NULL; int znak = strtol(line, &end, 10); if (znak == 0) { break; } char* name_start = end + 1; int rozmir_mena = strlen(name_start) - 1; if (rozmir_mena <= 0) { break; } char name[SIZE]; memset(name, 0, SIZE); memcpy(name, name_start, rozmir_mena); name[rozmir_mena] = '\0'; // Null-terminate the string properly int index = find_student_name(databaza, rozmer, name); if (index < 0) { memcpy(databaza[rozmer].name, name, rozmir_mena + 1); // Include null terminator databaza[rozmer].votes = znak; rozmer = rozmer + 1; } else { databaza[index].votes = databaza[index].votes + znak; } } if (rozmer == 0) { printf("Nepodarilo nacitat nic\n"); return 0; } qsort(databaza, rozmer, sizeof(struct student), funkcia_compare); printf("Vysledky:\n"); for (int i =0; i < rozmer; i = i + 1) { printf("%d %s\n", databaza[i].votes, databaza[i].name); } return 0; }