From 4e49e6ad1c3876631e0e5e9c22edfeaa9fa1dd3f Mon Sep 17 00:00:00 2001 From: Filip Chochol Date: Tue, 10 Mar 2026 13:48:31 +0100 Subject: [PATCH] push --- du2/program.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/du2/program.c b/du2/program.c index f7982a1..d6c199e 100644 --- a/du2/program.c +++ b/du2/program.c @@ -4,13 +4,17 @@ #define SIZE 100 -struct student { +struct student { + char meno[SIZE]; int hlasy; + }; int najdi_studenta(struct student* studenti, int pocet, const char* meno) { + for (int i = 0; i < pocet; i++) { + if (strcmp(studenti[i].meno, meno) == 0) { return i; } @@ -19,27 +23,33 @@ int najdi_studenta(struct student* studenti, int pocet, const char* meno) { } int porovnaj(const void* p1, const void* p2) { + struct student* s1 = (struct student*)p1; struct student* s2 = (struct student*)p2; + if (s2->hlasy != s1->hlasy) return s2->hlasy - s1->hlasy; return strcmp(s1->meno, s2->meno); } int main() { + struct student databaza[SIZE]; memset(databaza, 0, SIZE * sizeof(struct student)); int pocet = 0; char riadok[SIZE]; while (1) { + memset(riadok, 0, SIZE); char* vysledok = fgets(riadok, SIZE, stdin); + if (vysledok == NULL) { break; } char* koniec = NULL; int hodnota = (int)strtol(riadok, &koniec, 10); + if (koniec == riadok || hodnota == 0) { break; } @@ -49,6 +59,7 @@ int main() { } char* zaciatok_mena = koniec; + if (*zaciatok_mena == '\n' || *zaciatok_mena == '\0') { continue; } @@ -56,6 +67,7 @@ int main() { char meno[SIZE]; memset(meno, 0, SIZE); int velkost_mena = (int)strlen(zaciatok_mena); + if (zaciatok_mena[velkost_mena - 1] == '\n') { velkost_mena--; } @@ -67,14 +79,17 @@ int main() { meno[velkost_mena] = '\0'; int index = najdi_studenta(databaza, pocet, meno); + if (index < 0) { if (pocet >= SIZE) { break; } + memcpy(databaza[pocet].meno, meno, velkost_mena); databaza[pocet].meno[velkost_mena] = '\0'; databaza[pocet].hlasy = hodnota; pocet++; + } else { databaza[index].hlasy += hodnota; } @@ -86,6 +101,7 @@ int main() { printf("Nepodarilo nacitat nic\n"); } else { printf("Vysledky:\n"); + for (int i = 0; i < pocet; i++) { printf("%d %s\n", databaza[i].hlasy, databaza[i].meno); }