This commit is contained in:
Tančáková 2024-03-22 00:04:41 +01:00
parent 994444a401
commit e09ec4a4f3

View File

@ -4,52 +4,55 @@
#define SIZE 100 #define SIZE 100
// Štruktúra pre reprezentáciu študenta
typedef struct { typedef struct {
char name[SIZE]; char* meno;
int votes; int hlasov;
} Student; } Student;
// Funkcia na pridanie študenta do databázy
void addStudent(Student database[], char name[], int votes, int *count) {
strcpy(database[*count].name, name);
database[*count].votes = votes;
(*count)++;
}
int main() { int main() {
char line[SIZE]; char line[SIZE];
char name[SIZE]; int num_students = 0;
int votes; Student* students = NULL;
// Databáza študentov while (fgets(line, SIZE, stdin) != NULL) {
Student database[SIZE]; int hlasov;
int count = 0; char meno[SIZE];
if (sscanf(line, "%d %99[^\n]", &hlasov, meno) != 2) {
printf("Zadajte mená študentov a počet hlasov:\n");
while (1) {
// Načítanie riadku zo štandardného vstupu
if (fgets(line, SIZE, stdin) == NULL || line[0] == '\n') {
break; // Koniec načítania
}
// Rozdelenie riadku na meno a počet hlasov
if (sscanf(line, "%s %d", name, &votes) != 2) {
printf("CHYBA: Neplatny zapis na riadku.\n"); printf("CHYBA: Neplatny zapis na riadku.\n");
continue; return 1;
}
// Reallokácia pamäte pre ďalšieho študenta
students = realloc(students, (num_students + 1) * sizeof(Student));
if (students == NULL) {
printf("CHYBA: Nepodarilo sa alokovať pamäť.\n");
return 1;
} }
// Pridanie študenta do databázy // Alokácia pamäte pre meno študenta a kópia mena
addStudent(database, name, votes, &count); students[num_students].meno = malloc(strlen(meno) + 1);
if (students[num_students].meno == NULL) {
printf("CHYBA: Nepodarilo sa alokovať pamäť.\n");
return 1;
}
strcpy(students[num_students].meno, meno);
students[num_students].hlasov = hlasov;
num_students++;
} }
// Výpis výsledkov // Výpis výsledkov
printf("\nVysledky:\n"); printf("Vysledky:\n");
for (int i = 0; i < count; i++) { for (int i = 0; i < num_students; i++) {
printf("%d %s\n", database[i].votes, database[i].name); printf("%d %s\n", students[i].hlasov, students[i].meno);
} }
// Uvoľnenie pamäte
for (int i = 0; i < num_students; i++) {
free(students[i].meno);
}
free(students);
return 0; return 0;
} }