diff --git a/cv5/program.c b/cv5/program.c index 617093f..52e147a 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -28,31 +28,32 @@ int read_students(struct Student students[], int max_students) { int num_students = 0; char line[MAX_SIZE]; while (fgets(line, sizeof(line), stdin) != NULL) { - int votes; char name[MAX_SIZE]; - // Ak sa nenačítajú dva prvky (počet hlasov a meno), ukončíme načítanie - if (sscanf(line, "%d %99[^\n]", &votes, name) == 2) { - // Prejdeme všetkých študentov a ak nájdeme rovnaké meno, pripočítame hlasy - int found = 0; - for (int i = 0; i < num_students; i++) { - if (strcmp(students[i].name, name) == 0) { - students[i].votes += votes; - found = 1; - break; - } + int votes; + // Načítame počet hlasov + votes = (int)strtol(line, &line, 10); + // Preskočíme medzeru + line++; + // Načítame meno študenta + memcpy(name, line, strlen(line) - 1); // Odstránime znak nového riadka + name[strlen(line) - 1] = '\0'; // Nastavíme koniec reťazca + // Prejdeme všetkých študentov a ak nájdeme rovnaké meno, pripočítame hlasy + int found = 0; + for (int i = 0; i < num_students; i++) { + if (strcmp(students[i].name, name) == 0) { + students[i].votes += votes; + found = 1; + break; } - // Ak sme nenašli rovnaké meno, pridáme nového študenta - if (!found) { - strcpy(students[num_students].name, name); - students[num_students].votes = votes; - num_students++; - if (num_students >= max_students) { - break; // Prekročený maximálny počet študentov - } + } + // Ak sme nenašli rovnaké meno, pridáme nového študenta + if (!found) { + strcpy(students[num_students].name, name); + students[num_students].votes = votes; + num_students++; + if (num_students >= max_students) { + break; // Prekročený maximálny počet študentov } - } else { - // Chyba pri načítaní formátu, ukončíme načítanie - break; } } return num_students;