Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Deklarirati strukturu student koja ima članove: ime, prezime, adresa, prosjek i strukturu fakultet.
- Struktura fakultet ima članove: ime, smjer i godina.
- Unijeti jedan cijeli broj n koji označava broj studenata. Nakon toga učitati s tipkovnice podatke
- za n studenata te ih zatim zapisati u datoteku studenti.dat.
- čitavati redom podatke iz datoteke studenti.dat te ukoliko student ima veci prosjek od ukupnog prosjeka
- svih godina i svih smjerova (uzimati u obzir prve 2 decimale), zapisati podatke o tom studentu u datoteku
- najbolji.dat te na ekran ispisati koliko ima najboljih studenata.
- VLP će provjeravati razultat broja najboljih studenata,
- no svaki vas kod ce biti pregledan naknadno od strane asistenata kolegija.
- Obvezan je rad s datotekama kako biste ostvarili puni broj bodova.
- Primjer ulaznih podataka:
- 2
- Pero
- Peric
- Osjecka 1
- 3.5
- FERIT
- RAC
- 1
- Ivo
- Ivic
- Zagrebacka 1
- 4.5
- FERIT
- ELE
- 2
- prototip funkcija fread i fwrite:
- size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
- size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
- */
- #include<stdio.h>
- #include<stdlib.h>
- struct fakultet{
- char ime[20];
- char smjer[20];
- int godina;
- };
- struct student{
- char ime[20];
- char prezime[20];
- char adresa[50];
- float prosjek;
- struct fakultet faks;
- };
- int main()
- {
- int n, i, br=0;
- float avg=0;
- FILE *f1;
- FILE *f2;
- printf("Broj studenata: ");
- scanf("%d", &n);
- getchar();
- struct student studenti[n];
- f1=fopen("studenti.dat", "w+");
- if(f1==NULL)
- {
- perror("Greska pri otvaranju.");
- }
- for(i=0;i<n;i++)
- {
- printf("Ime:\n");
- scanf("%s", studenti[i].ime);
- printf("Prezime:\n");
- scanf("%s", studenti[i].prezime);
- getchar();
- printf("Adresa:\n");
- scanf ("%[^\n]%*c", studenti[i].adresa);
- printf("Prosjek:\n");
- scanf("%f", &studenti[i].prosjek);
- getchar();
- printf("Ime fakulteta:\n");
- scanf("%s", studenti[i].faks.ime);
- printf("Smjer:\n");
- scanf("%s", studenti[i].faks.smjer);
- printf("Godina:\n");
- scanf("%d", &studenti[i].faks.godina);
- getchar();
- fwrite(&studenti[i], sizeof(struct student), 1, f1);
- }
- rewind(f1);
- f2=fopen("najbolji.dat", "w");
- if(f2==NULL)
- {
- perror("Greska pri otvaranju.");
- }
- for(i=0;i<n;i++)
- {
- fread(&studenti[i], sizeof(struct student), 1, f1);
- avg+=studenti[i].prosjek/n;
- }
- for(i=0;i<n;i++)
- {
- if(studenti[i].prosjek>avg)
- {
- br++;
- fwrite(&studenti[i], sizeof(struct student), 1, f2);
- }
- }
- fclose(f1);
- fclose(f2);
- printf("REZULTATI:\n%d", br);
- return 0;
- }
Add Comment
Please, Sign In to add comment