#include #include #include #define MAX 51 #define STEP 10 typedef struct { char ime[MAX], prezime[MAX]; double broj_poena; } student; void greska() { fprintf(stderr, "-1\n"); exit(EXIT_FAILURE); } int cmp(const void * ptr1, const void * ptr2){ double x = * (double *) ptr1; student *st = (student *) ptr2; if(x == st->broj_poena){ return 0; } if( x < st->broj_poena){ return -1; } return 1; } int main(int argc, char const *argv[]) { FILE *in = fopen("rezultati.txt", "r"); if(in == NULL){ greska(); } int n = STEP; student *s = malloc(n*sizeof(student)); if(s == NULL){ greska(); } int i = 0; while (fscanf(in, "%s %s %lf", s[i].ime, s[i].prezime, &s[i].broj_poena) != EOF) { if(s[i].broj_poena < 0){ greska(); } i++; if(i == n){ n+=STEP; s = realloc(s, n*sizeof(student)); if(s == NULL){ greska(); } } } fclose(in); n = i; double x; scanf("%lf", &x); if(x < 0){ greska(); } student *nadjeni = bsearch(&x, s, n, sizeof(student), cmp); if(nadjeni == NULL){ printf("Niko nije ostvario zadati broj poena\n"); }else{ printf("%s %s\n", nadjeni->ime, nadjeni->prezime ); } free(s); return 0; }