skuska
This commit is contained in:
		
							parent
							
								
									c057acd40a
								
							
						
					
					
						commit
						80b02b2f26
					
				@ -3,68 +3,68 @@
 | 
				
			|||||||
#include <string.h>
 | 
					#include <string.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct student {
 | 
					typedef struct student {
 | 
				
			||||||
  char *name;
 | 
					    char *name;
 | 
				
			||||||
  int vote_count;
 | 
					    int vote_count;
 | 
				
			||||||
} student_t;
 | 
					} student_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int compare_students(const void *a, const void *b) {
 | 
					int compare_students(const void *a, const void *b) {
 | 
				
			||||||
  const student_t *student_a = (const student_t *)a;
 | 
					    const student_t *student_a = (const student_t *)a;
 | 
				
			||||||
  const student_t *student_b = (const student_t *)b;
 | 
					    const student_t *student_b = (const student_t *)b;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (student_a->vote_count > student_b->vote_count) {
 | 
					    if (student_a->vote_count > student_b->vote_count) {
 | 
				
			||||||
    return -1;
 | 
					        return -1;
 | 
				
			||||||
  } else if (student_a->vote_count < student_b->vote_count) {
 | 
					    } else if (student_a->vote_count < student_b->vote_count) {
 | 
				
			||||||
    return 1;
 | 
					        return 1;
 | 
				
			||||||
  }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return strcmp(student_a->name, student_b->name);
 | 
					    return strcmp(student_a->name, student_b->name);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main() {
 | 
					int main() {
 | 
				
			||||||
  student_t *students = NULL;
 | 
					    student_t *students = NULL;
 | 
				
			||||||
  int students_capacity = 0;
 | 
					    int students_capacity = 0;
 | 
				
			||||||
  int student_count = 0;
 | 
					    int student_count = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  char line[1024];
 | 
					    char line[1024];
 | 
				
			||||||
  while (fgets(line, sizeof(line), stdin)) {
 | 
					    while (fgets(line, sizeof(line), stdin)) {
 | 
				
			||||||
    int vote_count;
 | 
					        int vote_count;
 | 
				
			||||||
    char name[1024];
 | 
					        char name[1024];
 | 
				
			||||||
    sscanf(line, "%d %[^\n]", &vote_count, name);
 | 
					        sscanf(line, "%d %[^\n]", &vote_count, name);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (student_count >= students_capacity) {
 | 
					        int found = 0;
 | 
				
			||||||
      students_capacity = (students_capacity + 1) * 2;
 | 
					        for (int i = 0; i < student_count; i++) {
 | 
				
			||||||
      student_t *new_students = realloc(students, students_capacity * sizeof(student_t));
 | 
					            if (strcmp(students[i].name, name) == 0) {
 | 
				
			||||||
      if (new_students == NULL) {
 | 
					                students[i].vote_count += vote_count;
 | 
				
			||||||
        fprintf(stderr, "Error: Memory reallocation failed\n");
 | 
					                found = 1;
 | 
				
			||||||
        return 1;
 | 
					                break;
 | 
				
			||||||
      }
 | 
					            }
 | 
				
			||||||
      students = new_students;
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (!found) {
 | 
				
			||||||
 | 
					            if (student_count >= students_capacity) {
 | 
				
			||||||
 | 
					                students_capacity = (students_capacity + 1) * 2;
 | 
				
			||||||
 | 
					                student_t *new_students = realloc(students, students_capacity * sizeof(student_t));
 | 
				
			||||||
 | 
					                if (new_students == NULL) {
 | 
				
			||||||
 | 
					                    fprintf(stderr, "Error: Memory reallocation failed\n");
 | 
				
			||||||
 | 
					                    return 1;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                students = new_students;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            students[student_count].name = strdup(name);
 | 
				
			||||||
 | 
					            students[student_count].vote_count = vote_count;
 | 
				
			||||||
 | 
					            student_count++;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    int found = 0;
 | 
					    qsort(students, student_count, sizeof(student_t), compare_students);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    printf("Vysledky:\n");
 | 
				
			||||||
    for (int i = 0; i < student_count; i++) {
 | 
					    for (int i = 0; i < student_count; i++) {
 | 
				
			||||||
      if (strcmp(students[i].name, name) == 0) {
 | 
					        printf("%d %s\n", students[i].vote_count, students[i].name);
 | 
				
			||||||
        students[i].vote_count += vote_count; // Sčítaj nové hlasy k existujúcemu počtu hlasov študenta
 | 
					        free(students[i].name);
 | 
				
			||||||
        found = 1;
 | 
					 | 
				
			||||||
        break;
 | 
					 | 
				
			||||||
      }
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    free(students);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (!found) {
 | 
					    return 0;
 | 
				
			||||||
      students[student_count].name = strdup(name);
 | 
					 | 
				
			||||||
      students[student_count].vote_count = vote_count;
 | 
					 | 
				
			||||||
      student_count++;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  qsort(students, student_count, sizeof(student_t), compare_students);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  printf("Vysledky:\n");
 | 
					 | 
				
			||||||
  for (int i = 0; i < student_count; i++) {
 | 
					 | 
				
			||||||
    printf("%d %s\n", students[i].vote_count, students[i].name);
 | 
					 | 
				
			||||||
    free(students[i].name);
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  free(students);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return 0;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user