cv10
This commit is contained in:
parent
999d7f49b0
commit
40a85c9f89
@ -0,0 +1,90 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
// Porovnávací funkcia pre qsort
|
||||||
|
int porovnaj_mena(const void *a, const void *b) {
|
||||||
|
return strcmp(*(const char **)a, *(const char **)b);
|
||||||
|
}
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
int pocet_prijatych;
|
||||||
|
// Načítanie počtu študentov na prijatie
|
||||||
|
if (scanf("%d", &pocet_prijatych) != 1 || pocet_prijatych <= 0) {
|
||||||
|
puts("Nespravny vstup");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Pole pre zoznam mien študentov
|
||||||
|
char **zoznam = malloc(pocet_prijatych * sizeof(char *));
|
||||||
|
if (zoznam == NULL) {
|
||||||
|
puts("Chyba alokacie pamäte");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int pocet_prihlasok = 0;
|
||||||
|
// Načítanie zoznamu prihlášok
|
||||||
|
while (1) {
|
||||||
|
char meno[101];
|
||||||
|
if (scanf("%100s", meno) != 1) {
|
||||||
|
puts("Chyba pri citani vstupu");
|
||||||
|
free(zoznam);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
// Koniec zoznamu prihlášok
|
||||||
|
if (meno[0] == '\0') {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// Zmena veľkosti poľa, ak už nie je dosť miesta
|
||||||
|
if (pocet_prihlasok >= pocet_prijatych) {
|
||||||
|
pocet_prijatych *= 2;
|
||||||
|
char **nove_zoznam = realloc(zoznam, pocet_prijatych * sizeof(char *));
|
||||||
|
if (nove_zoznam == NULL) {
|
||||||
|
puts("Chyba alokacie pamäte");
|
||||||
|
free(zoznam);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
zoznam = nove_zoznam;
|
||||||
|
}
|
||||||
|
// Uloženie mena do zoznamu
|
||||||
|
zoznam[pocet_prihlasok] = strdup(meno);
|
||||||
|
if (zoznam[pocet_prihlasok] == NULL) {
|
||||||
|
puts("Chyba alokacie pamäte");
|
||||||
|
free(zoznam);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
pocet_prihlasok++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Kontrola, či boli prihlásení nejakí študenti
|
||||||
|
if (pocet_prihlasok == 0) {
|
||||||
|
puts("Ziadne prihlasky");
|
||||||
|
free(zoznam);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Usporiadanie zoznamu mien podľa abecedy
|
||||||
|
qsort(zoznam, pocet_prihlasok, sizeof(char *), porovnaj_mena);
|
||||||
|
|
||||||
|
// Vypísanie prijatých študentov
|
||||||
|
puts("Prijati studenti:");
|
||||||
|
for (int i = 0; i < pocet_prijatych && i < pocet_prihlasok; i++) {
|
||||||
|
printf("%s\n", zoznam[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Vypísanie neprijatých študentov
|
||||||
|
if (pocet_prihlasok > pocet_prijatych) {
|
||||||
|
puts("Neprijati studenti:");
|
||||||
|
for (int i = pocet_prijatych; i < pocet_prihlasok; i++) {
|
||||||
|
printf("%s\n", zoznam[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Uvoľnenie pamäte
|
||||||
|
for (int i = 0; i < pocet_prihlasok; i++) {
|
||||||
|
free(zoznam[i]);
|
||||||
|
}
|
||||||
|
free(zoznam);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user