diff --git a/du4/program b/du4/program new file mode 100755 index 0000000..6ac2ff8 Binary files /dev/null and b/du4/program differ diff --git a/du4/program.c b/du4/program.c new file mode 100644 index 0000000..f2acd33 --- /dev/null +++ b/du4/program.c @@ -0,0 +1,58 @@ +#include +#include +#include + +#define SIZE 100 + +struct student { + char name[SIZE]; + int votes; +}; + +struct student databaza[SIZE]; +int size = 0; + +int find_student(const char* name) { + for (int i = 0; i < size; i++) { + if (strcmp(databaza[i].name, name) == 0) { + return i; + } + } + return -1; +} + +int main() { + char line[SIZE]; + memset(databaza, 0, sizeof(databaza)); + + while (fgets(line, SIZE, stdin)) { + char* end = NULL; + int votes = strtol(line, &end, 10); + + if (votes <= 0) { + continue; + } + + char name[SIZE]; + memset(name, 0, SIZE); + strncpy(name, end + 1, strlen(end + 1) - 1); + + int id = find_student(name); + + if (id < 0) { + strncpy(databaza[size].name, name, SIZE - 1); + databaza[size].votes = votes; + size++; + } else { + databaza[id].votes += votes; + } + } + + printf("Vysledky:\n"); + for (int i = 0; i < size; i++) { + printf("%d %s\n", databaza[i].votes, databaza[i].name); + } + + return 0; +} +