diff --git a/du2/program.c b/du2/program.c index a973150..219c26a 100644 --- a/du2/program.c +++ b/du2/program.c @@ -39,12 +39,30 @@ int main() { { if(sscanf(line, "%d %s %s", &najdPocetHlasov, najdMeno, najdPriezvisko) == 3) { + najdDuplikatIndex = -1; + + //dost neefektivny a predbezny sposob hladania duplikatov.. + for (int i = 0; i < x; i++) + { + if (strcmp(DBStudenti[i].meno, najdMeno) == 0) + { + najdDuplikatIndex = i; + break; + } + } //prekopiruje udaje najdeneho zaznamu do DB - // (LEN ak sscanf() najde vsetky 3 hodnoty) - strcpy(DBStudenti[x].meno, najdMeno); - strcpy(DBStudenti[x].priezvisko, najdPriezvisko); - DBStudenti[x].pocetHlasov = najdPocetHlasov; - x += 1; + // (LEN ak sscanf() najde vsetky 3 hodnoty a nebol najdeny index duplicitneho zaznamu) + if (najdDuplikatIndex < 0) + { + strcpy(DBStudenti[x].meno, najdMeno); + strcpy(DBStudenti[x].priezvisko, najdPriezvisko); + DBStudenti[x].pocetHlasov = najdPocetHlasov; + x += 1; + } + else + { + DBStudenti[x].pocetHlasov += najdPocetHlasov; + } //(pravdepodobne redundantne) reset nacitanych hodnot na konci kazdeho cyklu // memset(najdMeno, 0, SIZE); @@ -65,11 +83,6 @@ int main() { { break; } - //vynechaj rovnake predosle zaznamy - if (strcmp(DBStudenti[i].meno, DBStudenti[i-1].meno) == 0) - { - continue; - } //malo by vypisovat zaznamy takto: //10_Tomas_Vlcek printf("%d %s %s\n", DBStudenti[i].pocetHlasov, DBStudenti[i].meno, DBStudenti[i].priezvisko);