diff --git a/cv5/program.c b/cv5/program.c index 7e145f1..9a20a1c 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -9,6 +9,15 @@ typedef struct { int hlasov; } Student; +int find_student_index(Student* students, int num_students, const char* meno) { + for (int i = 0; i < num_students; i++) { + if (strcmp(students[i].meno, meno) == 0) { + return i; // Nájdený študent + } + } + return -1; // Študent neexistuje +} + int main() { char line[SIZE]; int num_students = 0; @@ -48,18 +57,23 @@ int main() { // Odstránenie konca riadka z mena meno[len - 1] = '\0'; - // Reallokácia pamäte pre ďalšieho študenta - students = realloc(students, (num_students + 1) * sizeof(Student)); - if (students == NULL) { - printf("CHYBA: Nepodarilo sa alokovať pamäť.\n"); - return 1; + // Zistiť, či študent už existuje v databáze + int index = find_student_index(students, num_students, meno); + if (index == -1) { + // Študent neexistuje, pridáme ho do databázy + students = realloc(students, (num_students + 1) * sizeof(Student)); + if (students == NULL) { + printf("CHYBA: Nepodarilo sa alokovať pamäť.\n"); + return 1; + } + students[num_students].meno = meno; + students[num_students].hlasov = hlasov; + num_students++; + } else { + // Študent existuje, zvýšime počet hlasov + students[index].hlasov += hlasov; + free(meno); // Uvoľníme meno, pretože sme ho nevyužili } - - // Nastavenie hodnôt pre nového študenta - students[num_students].meno = meno; - students[num_students].hlasov = hlasov; - - num_students++; } // Výpis výsledkov