diff --git a/cv5/program.c b/cv5/program.c index 0f4be4a..d301e87 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -5,68 +5,49 @@ #define MAX_NAME_LENGTH 100 #define MAX_BUFFER_LENGTH 256 -// Structure to store student information -typedef struct { - char name[MAX_NAME_LENGTH]; +#define SIZE 100 + +struct student { + char name[SIZE]; int votes; -} Student; - -// Comparison function for sorting students by votes and name -int compare_students(const void *a, const void *b) { - const Student *student_a = (const Student *)a; - const Student *student_b = (const Student *)b; - - // First compare by number of votes - if (student_a->votes != student_b->votes) { - return student_b->votes - student_a->votes; // Sort in descending order - } - - // If votes are tied, compare lexicographically by name - return strcmp(student_a->name, student_b->name); +}; +struct student database[SIZE]; +memset(database, 0, SIZE * sizeof(struct student)); +int size = 0; +char line[SIZE]; +memset(line, 0, SIZE); +char *r = fgets(line, SIZE, stdin); +if (r == NULL) { + // Nastal koniec vstupu +} +char *end = NULL; +int value = strtol(line, &end, 10); +if (value == 0) { + // Prevod sa nepodaril } -int main() { - // Initialize array to store students - Student students[MAX_BUFFER_LENGTH]; - int num_students = 0; - - // Read votes from standard input - char buffer[MAX_BUFFER_LENGTH]; - while (fgets(buffer, sizeof(buffer), stdin) != NULL) { - // Read number of votes and student's name - int votes; - char name[MAX_NAME_LENGTH]; - if (sscanf(buffer, "%d %99[^\n]", &votes, name) != 2) { - fprintf(stderr, "Error: Invalid input format.\n"); - return 1; - } - - // Store student in array - strncpy(students[num_students].name, name, MAX_NAME_LENGTH); - students[num_students].votes = votes; - num_students++; - - // Check for exceeding maximum number of students - if (num_students >= MAX_BUFFER_LENGTH) { - fprintf(stderr, "Error: Too many students.\n"); - return 1; +// Pre pokračovanie získame meno študenta +char name[SIZE]; +memset(name, 0, SIZE); +char *name_start = end + 1; +int name_length = strlen(name_start) - 1; // Nezahrňujeme koniec riadka +if (name_length > 0) { + memcpy(name, name_start, name_length); +} else { + // Nepodarilo sa načítať meno +} +int find_student(struct student *students, int size, const char *name) { + for (int i = 0; i < size; i++) { + if (strcmp(students[i].name, name) == 0) { + return i; // Nájdený študent } } - - // Print error message if no records were retrieved - if (num_students == 0) { - fprintf(stderr, "Error: No records retrieved.\n"); - return 1; - } - - // Sort students by number of votes and name - qsort(students, num_students, sizeof(Student), compare_students); - - // Print results - printf("Results:\n"); - for (int i = 0; i < num_students; i++) { - printf("%d %s\n", students[i].votes, students[i].name); - } + return -1; // Študent nenájdený +} +int id = find_student(database, size, name); +if (id < 0) { + // + return 0; }