#include #include #include #define MAX_IME 21 #define MAX_PREZIME 21 typedef struct { char ime[MAX_IME]; char prezime[MAX_PREZIME]; float prosek; } STUDENT; void greska(); int poredi(const void *a, const void *b); int main() { STUDENT *niz; float pr; int n; scanf("%f%d", &pr, &n); if(pr < 6 || pr > 10 || n <= 0) greska(); getchar(); niz = (STUDENT*)malloc(n * sizeof(STUDENT)); if(niz == NULL) greska(); int i; for(i = 0; i < n; i++) { scanf("%s %s%f", niz[i].prezime, niz[i].ime, &niz[i].prosek); if(niz[i].prosek < 6 || niz[i].prosek > 10) greska(); } qsort(niz, n, sizeof(STUDENT), poredi); int br = 0; for(i = 0; i < n; i++) { if(niz[i].prosek >= pr) { printf("%s %s %.2f\n", niz[i].prezime, niz[i].ime, niz[i].prosek); br++; } } if(br == 0) printf("-"); free(niz); return 0; } void greska() { fprintf(stderr, "-1"); exit(EXIT_FAILURE); } int poredi(const void *a, const void *b) { STUDENT *prvi = (STUDENT*)a; STUDENT *drugi = (STUDENT*)b; if(prvi->prosek < drugi->prosek) return 1; else if(prvi->prosek > drugi->prosek) return -1; else { int prezimena = strcmp(prvi->prezime, drugi->prezime); if(prezimena < 0) return -1; else if(prezimena > 0) return 1; else return -strcmp(prvi->ime, drugi->ime); } }