Samo treba da prodjes kroz niz studenata i pitas koju su ocenu dobili i u zavisnosti od toga ih ispises ili ne.
U tvom kodu sam dodao dve funkcije "polozili_ispis()" i "pali_ispis()" koje rade to.
Imao si gresku i u funkciji ucitaj_studente() jer proveravas da li je kraj fajla sa feof(f) sto nije dobro i nece ucitati sve studente iz fajla, da ne objasnjavam zasto, imas mnogo tema u kojima se govori o tome :)
Code:
#include <stdio.h>
#define MAX_IME 20
#define MAX_PREZIME 30
#define MAX_STUDENATA 100
typedef struct studenti
{
char ime[MAX_IME];
char prezime[MAX_PREZIME];
int brojindeksa, ocena;
} Studenti;
Studenti student[MAX_STUDENATA];
int broj_studenata = 0;
int ucitaj_studenta(FILE *f, Studenti *s)
{
if(fscanf(f, "%s%s%d%d", s->ime, s->prezime, &(s->brojindeksa), &(s->ocena)) == 4)
return 1;
else
return 0;
}
void ispisi_studente()
{
int i;
for(i = 0; i < broj_studenata; i++)
printf("%-10s %-15s %-15d %-5d\n", student[i].ime, student[i].prezime, student[i].brojindeksa, student[i].ocena);
}
void polozili_ispis()
{
int i;
printf("Polozili su: \n");
for(i = 0; i < broj_studenata; i++)
if(student[i].ocena > 5)
printf("%s %s %d %d\n", student[i].ime, student[i].prezime, student[i].brojindeksa, student[i].ocena);
}
void pali_ispis()
{
int i;
printf("\nPali su su: \n");
for(i = 0; i < broj_studenata; i++)
if(student[i].ocena < 6)
printf("%s %s %d %d\n", student[i].ime, student[i].prezime, student[i].brojindeksa, student[i].ocena);
}
int main()
{
FILE *f;
f = fopen("ocene.txt", "r");
if(f == NULL)
{
printf("Greska prilikom otvaranja datoteke\n");
return 1;
}
while(ucitaj_studenta(f, &student[broj_studenata]))
broj_studenata++;
printf("Ime Prezime Broj indeksa Ocena\n");
printf("-------------------------------------------------------------\n");
ispisi_studente();
fclose(f);
printf("-------------------------------------------------------------\n");
polozili_ispis();
pali_ispis();
}