From c4ae619f7ffef99efb5ea4353eec7cb7d426cb1f Mon Sep 17 00:00:00 2001 From: Matus Tokarcik Date: Thu, 21 Mar 2024 21:06:21 +0100 Subject: [PATCH] cv5 --- cv5/program.c | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/cv5/program.c b/cv5/program.c index 7685db4..d361e67 100644 --- a/cv5/program.c +++ b/cv5/program.c @@ -4,12 +4,40 @@ #include #define SIZE 100 +#define ERROR_OUTPUT stderr + struct student { char name[SIZE]; int votes; }; +int check_and_parse_line(char *line, int *votes, char *name) { + // Nájdenie prvej medzery v reťazci + char *space_pos = strchr(line, ' '); + + // Kontrola, či sa našla medzera + if (space_pos == NULL) { + return 0; // Neplatný formát riadku + } + + // Konverzia počtu hlasov zo substringu reťazca do celého čísla + *votes = atoi(line); + + // Nastavenie ukazovateľa name na miesto za prvou medzerou + char *name_start = space_pos + 1; + + // Kopírovanie mena zo zvyšku reťazca (za prvou medzerou) do poľa name + strcpy(name, name_start); + + // Odstránenie konca riadka zo záznamu mena (ak je prítomný) + char *newline_pos = strchr(name, '\n'); + if (newline_pos != NULL) { + *newline_pos = '\0'; + } + + return 1; // Platný formát riadku +} int find_student(struct student* students,int size, const char* name){ for (int i = 0; i < size; i++){ @@ -22,12 +50,12 @@ int find_student(struct student* students,int size, const char* name){ } -int compare(const void* p1, const void* p2){ +/*int compare(const void* p1, const void* p2){ const struct student* s1 = (const struct student*)p1; const struct student* s2 = (const struct student*)p2; return strcmp(s2->name, s1->name); } - +*/ int main(){ @@ -35,9 +63,20 @@ int main(){ memset(databaza, 0, SIZE*sizeof(struct student)); //inicializujem pamat, vynulujem int size = 0; - -//nacitanie jednej polozky do databazy char line[SIZE]; + int votes; + char name[SIZE]; + + //nacitanie vstupu + while (fgets(line, SIZE, stdin) != NULL){ + if (!check_line(line, &votes, name)){ + printf(ERROR_OUTPUT, "chybny format vstupu: %s\n", line); + continue; + } + + + +/* memset(line,0,SIZE); char* r = fgets(line,SIZE,stdin); if (r == NULL){ @@ -70,7 +109,7 @@ else { printf( "nepodarilo sa nacitat meno \n"); return 1; } - +*/ //prejde vsetky polozky v databaze int id = find_student(databaza,size,name);