Advertisement
aed1oN

T12Z5

Feb 15th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.16 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. struct Predmet {
  5.     int id;
  6.     char naziv[50];
  7. };
  8.  
  9. void unesi(char *string, int vel) {
  10.     char znak = getchar();
  11.     int i = 0;
  12.     if (znak == '\n') znak = getchar();
  13.     while (i < vel - 1 && znak != '\n') {
  14.         string[i] = znak;
  15.         i++;
  16.         znak = getchar();
  17.     }
  18.     string[i] = '\0';
  19. }
  20.  
  21. int ucitaj(struct Predmet *predmeti, int limit) {
  22.     int i = 0, j = 0;
  23.     char c = 'a';
  24.     FILE *ulaz;
  25.     ulaz = fopen("predmeti.txt", "r");
  26.     if (!ulaz) {
  27.         printf("Greska pri otvaranju datoteke za citanje.\n");
  28.         return 0;
  29.     }
  30.     while (i < limit && fscanf(ulaz, "%d ", &predmeti[i].id) == 1) {
  31.         do {
  32.             c = fgetc(ulaz);
  33.             predmeti[i].naziv[j] = c;
  34.             j++;
  35.         } while (j < 30 && c != 10);  
  36.         predmeti[i].naziv[j - 1] = '\0';
  37.         j = 0;
  38.         i++;
  39.     }
  40.     fclose(ulaz);
  41.     return i;
  42. }
  43.  
  44. void statistikaPredmeta() {
  45.     struct Predmet predmeti[10];
  46.     int velicina = ucitaj(predmeti, 10);
  47.     int i, isti = 1, idUnos, brIndexa, predmet, ocjena;
  48.     int izasli = 0, polozili = 0, suma = 0;
  49.     char unos[40];
  50.     double prosjek, prolaznost;
  51.     FILE *ulaz;
  52.     do {
  53.         printf(" Unesite predmet: ");
  54.         unesi(unos, 40);
  55.         for (i = 0; i < velicina; i++) {
  56.             if (!strcmp(unos, predmeti[i].naziv)) {
  57.                 idUnos = predmeti[i].id;
  58.                 isti = 0;
  59.                 break;
  60.             }
  61.         }
  62.         if (i == velicina)
  63.             printf("Nepostojeci predmet!\n");
  64.     } while (isti);
  65.     ulaz = fopen("ispiti.txt", "r");
  66.     if (ulaz == NULL) {
  67.         printf("Pogreska kod otvaranja datoteke!");
  68.         return;
  69.     }
  70.     while (fscanf(ulaz, "%d %d %d", &brIndexa, &predmet, &ocjena) == 3) {
  71.         if (idUnos == predmet) {
  72.             suma += ocjena;
  73.             izasli++;  
  74.             if (ocjena >= 6)
  75.                 polozili++;
  76.         }
  77.     }
  78.     fclose(ulaz);
  79.     if (!izasli) {
  80.         printf("Zalimo, ali ne postoje podaci o predmetu %s!\n", unos);
  81.         return;
  82.     }
  83.     prosjek = (float)suma / izasli;
  84.     prolaznost = ((float)polozili / izasli) * 100;
  85.     printf("Prosjecna ocjena: %.2f", prosjek);
  86.     printf("\nProlaznost: %g%%\n", prolaznost);
  87. }
  88.  
  89. void statistikaStudenta() {
  90.     int unos, index, predmet, ocjena;
  91.     int slusao = 0, polozio = 0, suma = 0;  
  92.     double prosjek;
  93.     FILE *ulaz;
  94.     printf(" Unesite broj indexa: ");
  95.     scanf("%d", &unos);
  96.     ulaz = fopen("ispiti.txt", "r");
  97.     if (!ulaz) {
  98.         printf("Greska pri otvaranju datoteke za citanje!");
  99.         return;
  100.     }
  101.     while (fscanf(ulaz, "%d %d %d", &index, &predmet, &ocjena) == 3) {
  102.         if (unos == index) {
  103.             slusao++;
  104.             if (ocjena >= 6) {
  105.                 polozio++;
  106.                 suma += ocjena;
  107.             }
  108.         }
  109.     }
  110.     fclose(ulaz);
  111.     if (!slusao) {
  112.         printf("Zalimo, ali ne postoje podaci o studentu sa brojem indexa %d!\n", unos);
  113.         return;
  114.     }
  115.     prosjek = (double)suma / polozio;
  116.     printf("Student je slusao %d predmeta, a polozio %d (%d%%).\n", slusao, polozio, (int)(polozio/slusao) * 100);
  117.     printf("Prosjecna ocjena polozenih predmeta je %.1f\n", prosjek);
  118. }
  119.  
  120. int main() {
  121.     int opcija;
  122.     do {
  123.         printf("Unesite 1 za statistiku studenta, 2 za statistiku predmeta, 0 za izlaz:");
  124.         scanf("%d", &opcija);
  125.         switch (opcija) {
  126.             case 0:
  127.                 break;  
  128.             case 1:
  129.                 statistikaStudenta();
  130.                 break;
  131.             case 2:
  132.                 statistikaPredmeta();
  133.                 break;
  134.             default:
  135.                 printf("Pogresan unos!\n");
  136.         }
  137.     } while (opcija != 0);
  138.     return 0;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement