filip710

2016KOL2_Z1_GRUPA B

Jul 6th, 2016
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.87 KB | None | 0 0
  1. /* Deklarirati strukturu student koja ima članove: ime, prezime, adresa, prosjek i strukturu fakultet.
  2. Struktura fakultet ima članove: ime, smjer i godina.
  3. Unijeti jedan cijeli broj n koji označava broj studenata. Nakon toga učitati s tipkovnice podatke
  4. za n studenata te ih zatim zapisati u datoteku studenti.dat.
  5. čitavati redom podatke iz datoteke studenti.dat te ukoliko student ima veci prosjek od ukupnog prosjeka
  6. svih godina i svih smjerova (uzimati u obzir prve 2 decimale), zapisati podatke o tom studentu u datoteku
  7. najbolji.dat te na ekran ispisati koliko ima najboljih studenata.
  8.  
  9. VLP će provjeravati razultat broja najboljih studenata,
  10. no svaki vas kod ce biti pregledan naknadno od strane asistenata kolegija.
  11. Obvezan je rad s datotekama kako biste ostvarili puni broj bodova.
  12.  
  13. Primjer ulaznih podataka:
  14. 2
  15. Pero
  16. Peric
  17. Osjecka 1
  18. 3.5
  19. FERIT
  20. RAC
  21. 1
  22. Ivo
  23. Ivic
  24. Zagrebacka 1
  25. 4.5
  26. FERIT
  27. ELE
  28. 2
  29.  
  30. prototip funkcija fread i fwrite:
  31. size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
  32. size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
  33.  */
  34.  
  35. #include<stdio.h>
  36. #include<stdlib.h>
  37. struct fakultet{
  38.     char ime[20];
  39.     char smjer[20];
  40.     int godina;
  41. };
  42. struct student{
  43.     char ime[20];
  44.     char prezime[20];
  45.     char adresa[50];
  46.     float prosjek;
  47.     struct fakultet faks;
  48. };
  49.  
  50.  
  51. int main()
  52. {
  53.     int n, i, br=0;
  54.     float avg=0;
  55.     FILE *f1;
  56.     FILE *f2;
  57.     printf("Broj studenata: ");
  58.     scanf("%d", &n);
  59.     getchar();
  60.     struct student studenti[n];
  61.  
  62.     f1=fopen("studenti.dat", "w+");
  63.  
  64.     if(f1==NULL)
  65.     {
  66.         perror("Greska pri otvaranju.");
  67.     }
  68.  
  69.     for(i=0;i<n;i++)
  70.     {
  71.         printf("Ime:\n");
  72.         scanf("%s", studenti[i].ime);
  73.         printf("Prezime:\n");
  74.         scanf("%s", studenti[i].prezime);
  75.         getchar();
  76.         printf("Adresa:\n");
  77.         scanf ("%[^\n]%*c", studenti[i].adresa);
  78.         printf("Prosjek:\n");
  79.         scanf("%f", &studenti[i].prosjek);
  80.         getchar();
  81.         printf("Ime fakulteta:\n");
  82.         scanf("%s", studenti[i].faks.ime);
  83.         printf("Smjer:\n");
  84.         scanf("%s", studenti[i].faks.smjer);
  85.         printf("Godina:\n");
  86.         scanf("%d", &studenti[i].faks.godina);
  87.         getchar();
  88.         fwrite(&studenti[i], sizeof(struct student), 1, f1);
  89.     }
  90.     rewind(f1);
  91.  
  92.     f2=fopen("najbolji.dat", "w");
  93.  
  94.     if(f2==NULL)
  95.     {
  96.         perror("Greska pri otvaranju.");
  97.     }
  98.  
  99.     for(i=0;i<n;i++)
  100.     {
  101.         fread(&studenti[i], sizeof(struct student), 1, f1);
  102.         avg+=studenti[i].prosjek/n;
  103.     }
  104.     for(i=0;i<n;i++)
  105.     {
  106.         if(studenti[i].prosjek>avg)
  107.         {
  108.             br++;
  109.             fwrite(&studenti[i], sizeof(struct student), 1, f2);
  110.         }
  111.     }
  112.  
  113.     fclose(f1);
  114.     fclose(f2);
  115.     printf("REZULTATI:\n%d", br);
  116.  
  117.     return 0;
  118. }
Add Comment
Please, Sign In to add comment