pvjc24/cv10/program.c

66 lines
2.0 KiB
C
Raw Normal View History

2024-04-25 23:40:20 +00:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
2024-04-25 23:41:14 +00:00
#define SIZE 100
2024-04-25 23:40:20 +00:00
int porovnaj_mena(const void *a, const void *b) {
2024-04-25 23:41:14 +00:00
const char *s1 = *((const char **)a);
const char *s2 = *((const char **)b);
return strcmp(s1, s2);
2024-04-25 23:40:20 +00:00
}
int main() {
2024-04-25 23:43:40 +00:00
int pocet_prijatych;
if (scanf("%d\n", &pocet_prijatych) != 1 || pocet_prijatych <= 0) {
puts("Nespravny vstup");
return 1;
}
2024-04-25 23:41:14 +00:00
char *pole_smernikov[SIZE];
memset(pole_smernikov, 0, SIZE * sizeof(char *));
int pocet_mien_v_poli = 0;
char riadok[SIZE];
char *r = fgets(riadok, SIZE, stdin);
while (r != NULL && riadok[0] != '\n') {
int pocet_znakov = strlen(riadok) - 1; // Odstránenie konca riadka
// Kontrola, či sa meno už nachádza v poli smerníkov
int najdene = 0;
for (int i = 0; i < pocet_mien_v_poli; i++) {
if (memcmp(pole_smernikov[i], riadok, pocet_znakov) == 0) {
najdene = 1;
break;
}
2024-04-25 23:40:20 +00:00
}
2024-04-25 23:41:14 +00:00
// Ak sa meno nenachádza v poli, pridáme ho
if (!najdene) {
pole_smernikov[pocet_mien_v_poli] = malloc(pocet_znakov + 1);
if (pole_smernikov[pocet_mien_v_poli] == NULL) {
puts("Chyba alokacie pamate");
2024-04-25 23:40:20 +00:00
return 1;
}
2024-04-25 23:41:14 +00:00
memcpy(pole_smernikov[pocet_mien_v_poli], riadok, pocet_znakov);
pole_smernikov[pocet_mien_v_poli][pocet_znakov] = '\0'; // Nulový ukončovač reťazca
pocet_mien_v_poli++;
2024-04-25 23:40:20 +00:00
}
2024-04-25 23:41:14 +00:00
r = fgets(riadok, SIZE, stdin);
2024-04-25 23:40:20 +00:00
}
2024-04-25 23:41:14 +00:00
// Triedenie zoznamu mien
qsort(pole_smernikov, pocet_mien_v_poli, sizeof(char *), porovnaj_mena);
2024-04-25 23:40:20 +00:00
2024-04-25 23:41:14 +00:00
// Vypísanie zotriedených mien
2024-04-25 23:43:40 +00:00
printf("Prijati studenti:\n");
for (int i = 0; i < pocet_prijatych && i < pocet_mien_v_poli; i++) {
2024-04-25 23:41:14 +00:00
printf("%s\n", pole_smernikov[i]);
2024-04-25 23:40:20 +00:00
}
// Uvoľnenie pamäte
2024-04-25 23:41:14 +00:00
for (int i = 0; i < pocet_mien_v_poli; i++) {
free(pole_smernikov[i]);
2024-04-25 23:40:20 +00:00
}
return 0;
}