From 8024ab010aceca21adac159d00e55bc29c504d43 Mon Sep 17 00:00:00 2001 From: st529yr Date: Wed, 20 Mar 2024 18:02:19 +0100 Subject: [PATCH] oooodchod --- cv5/program.c | 65 +++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/cv5/program.c b/cv5/program.c index 27b9cf1..84e90f8 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -2,59 +2,52 @@ #include #include -#define SIZE 100 +#define MAX_STUDENTS 100 +#define MAX_NAME_LENGTH 100 -struct student { - char name[SIZE]; +// Štruktúra pre reprezentáciu študenta +struct Student { + char name[MAX_NAME_LENGTH]; int votes; }; -void initialize_database(struct student* database, int size, char* names[], int* votes) { - for (int i = 0; i < size; i++) { - strcpy(database[i].name, names[i]); - database[i].votes = votes[i]; - } -} - -// Pomocná funkcia na porovnanie dvoch študentov +// Porovnávacia funkcia pre qsort int compare_students(const void* a, const void* b) { - const struct student* studentA = (const struct student*)a; - const struct student* studentB = (const struct student*)b; + const struct Student* studentA = (const struct Student*)a; + const struct Student* studentB = (const struct Student*)b; - // Ak majú študenti rôzny počet hlasov, porovnáme ich podľa počtu hlasov + // Porovnanie podľa počtu hlasov if (studentA->votes != studentB->votes) { - return studentB->votes - studentA->votes; // Zoradenie zostupne podľa počtu hlasov + return studentB->votes - studentA->votes; // Zotriedenie zostupne podľa počtu hlasov } else { - // Ak majú rovnaký počet hlasov, porovnáme ich abecedne podľa mena + // Ak majú rovnaký počet hlasov, zotriedenie podľa mena return strcmp(studentA->name, studentB->name); } } int main() { - struct student database[SIZE]; - memset(database, 0, SIZE * sizeof(struct student)); - int size = 10; // Veľkosť databázy mien študentov - char* names[10] = {"Bardos Mrtakrys", "Rita Umhi", "Prylenn Alak", "Lak'hi Elavorg", "Prylenn Alak", "Prylenn Alak", "Prylenn Alak", "Rita Umhi", "Terian Dis"}; - int votes[10] = {2, 1, 1, 9, 3, 3, 3, 1, 10}; // Počet hlasov pre každého študenta + // Databáza študentov s preddefinovanými hodnotami + struct Student students[MAX_STUDENTS] = { + {"Bardos Mrtakrys", 2}, + {"Rita Umhi", 1}, + {"Prylenn Alak", 1}, + {"Lak'hi Elavorg", 10}, + {"Prylenn Alak", 3}, + {"Prylenn Alak", 3}, + {"Prylenn Alak", 3}, + {"Rita Umhi", 1} + }; + int num_students = 8; // Počet študentov v databáze - initialize_database(database, size, names, votes); // Inicializácia databázy mien študentov + // Zoradenie študentov podľa počtu hlasov a mena + qsort(students, num_students, sizeof(struct Student), compare_students); - // Zoradenie databázy študentov podľa počtu hlasov a abecedne - qsort(database, size, sizeof(struct student), compare_students); - - // Výpis zoradenej databázy - printf("Zoradeny zoznam studentov podla poctu hlasov a abecedne:\n"); - for (int i = 0; i < size; i++) { - printf("%d %s\n", database[i].votes, database[i].name); + // Výpis zoradeného zoznamu študentov + printf("Výsledky:\n"); + for (int i = 0; i < num_students; i++) { + printf("%d %s\n", students[i].votes, students[i].name); } - // Výpočet a výpis celkového počtu hlasov - int total_votes = 0; - for (int i = 0; i < size; i++) { - total_votes += database[i].votes; - } - printf("Celkovy pocet ziskanych hlasov: %d\n", total_votes); - return 0; }