diff --git a/cv5/program.c b/cv5/program.c index bcf30b7..a5f8a91 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -1,82 +1,52 @@ #include #include #include +#include #define SIZE 100 -// Definícia štruktúry pre uchovanie informácií o študentovi struct student { char name[SIZE]; int votes; }; -// Funkcia pre porovnanie dvoch záznamov -int compare(const void* p1, const void* p2){ - struct student* s1 = (struct student*)p1; - struct student* s2 = (struct student*)p2; - - // Porovnávanie podľa počtu hlasov, ak sú rovnaké, potom podľa abecedy - if (s1->votes != s2->votes) { - return s2->votes - s1->votes; // Zoradenie zostupne podľa počtu hlasov - } else { - return strcmp(s1->name, s2->name); // Zoradenie abecedne +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; + } } + return -1; } int main() { - struct student database[SIZE]; // Databáza študentov - memset(database, 0, SIZE * sizeof(struct student)); // Inicializácia pamäte - int size = 0; // Aktuálny počet študentov v databáze - - // Zoznam študentov s počtom hlasov - char input[][SIZE] = { - "2 Bardos Mrtakrys", - "1 Rita Umhi", - "1 Prylenn Alak", - "10 Lak'hi Elavorg", - "3 Prylenn Alak", - "3 Prylenn Alak", - "3 Prylenn Alak", - "1 Rita Umhi" - }; - int input_size = sizeof(input) / sizeof(input[0]); - - // Vytvorenie databázy študentov zo vstupných údajov - for (int i = 0; i < input_size; i++) { - int votes; + struct student database[SIZE]; + memset(database, 0, SIZE * sizeof(struct student)); + int size = 0; + + srand(time(NULL)); // Inicializácia generátora náhodných čísel + + // Generovanie náhodných dát do databázy + for (int i = 0; i < 10; i++) { + int votes = rand() % 11; // Generovanie náhodného počtu hlasov od 0 do 10 char name[SIZE]; - if (sscanf(input[i], "%d %[^\n]", &votes, name) != 2) { - printf("Chyba pri načítaní vstupu!\n"); - return 1; - } - - // Hľadanie študenta v databáze - int found = 0; - for (int j = 0; j < size; j++) { - if (strcmp(database[j].name, name) == 0) { - database[j].votes += votes; - found = 1; - break; - } - } - - // Pridanie nového študenta do databázy - if (!found) { + sprintf(name, "Student %d", i+1); // Vytvorenie náhodného mena a priezviska študenta + int id = find_student(database, size, name); + if (id < 0) { strcpy(database[size].name, name); database[size].votes = votes; size++; + } else { + database[id].votes += votes; } } - - // Zoradenie databázy podľa počtu hlasov a abecedne - qsort(database, size, sizeof(struct student), compare); - - // Výpis výsledkov - printf("Vysledky:\n"); + + // Výpis databázy + printf("Databaza:\n"); for (int i = 0; i < size; i++) { printf("%d %s\n", database[i].votes, database[i].name); } - + return 0; }