From 6ff59c7d0132c1ad1fcb162f3c33062e8269b0f1 Mon Sep 17 00:00:00 2001 From: Weber Date: Fri, 22 Mar 2024 00:29:34 +0000 Subject: [PATCH] test --- cv5/program.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/cv5/program.c b/cv5/program.c index 888c5f6..0d53740 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -26,8 +26,7 @@ int main() { int student_count = 0; char line[1024]; - - while (fgets(line, sizeof(line), stdin) != NULL) { + while (fgets(line, sizeof(line), stdin)) { int vote_count; char name[1024]; sscanf(line, "%d %[^\n]", &vote_count, name); @@ -36,21 +35,32 @@ int main() { students_capacity = (students_capacity + 1) * 2; student_t *new_students = realloc(students, students_capacity * sizeof(student_t)); if (new_students == NULL) { - fprintf(stderr, "Chyba"); + fprintf(stderr, "Error: Memory reallocation failed\n"); return 1; } students = new_students; } - students[student_count].name = strdup(name); - students[student_count].vote_count = vote_count; - student_count++; + int existing_student_index = -1; + for (int i = 0; i < student_count; i++) { + if (strcmp(students[i].name, name) == 0) { + existing_student_index = i; + break; + } + } + + if (existing_student_index != -1) { + students[existing_student_index].vote_count += vote_count; + } else { + students[student_count].name = strdup(name); + students[student_count].vote_count = vote_count; + student_count++; + } } qsort(students, student_count, sizeof(student_t), compare_students); printf("Vysledky:\n"); - for (int i = 0; i < student_count; i++) { printf("%d %s\n", students[i].vote_count, students[i].name); } @@ -61,4 +71,4 @@ int main() { free(students); return 0; -} \ No newline at end of file +}