_abraxas

Untitled

Aug 1st, 2013
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.33 KB | None | 0 0
  1. #include <time.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5. #define BROJ_PITANJA 6
  6. #define MAX_BROJ_STUDENTA 100
  7. int BROJ_STUDENTA = 0;
  8.  
  9. FILE* datotekaOdgovori;
  10.  
  11. float* ocjeniStudente (char odgovoriStudenta[][BROJ_PITANJA], const char tocniOdgovori[]);
  12. void generirajOdgovore (char*);
  13.  
  14. int main() {
  15.     srand(unsigned (time(NULL)));
  16.     int i = 0, j = 0, student = 0, odgovor = 0, ocjena = 0, c = 0;
  17.     const char nazivDatoteke[] = "studenti_ocjene.txt";
  18.     const char tocniOdgovori[] = {'D', 'B', 'C', 'A', 'A', 'C'};
  19.     char studenti[MAX_BROJ_STUDENTA][BROJ_PITANJA];
  20.     char odgovori[BROJ_PITANJA];
  21.     float* ocjene;
  22.  
  23.     printf("Broj studenta?: ");
  24.     scanf("%d", &BROJ_STUDENTA);
  25.  
  26.     //generiraj slucajne odgovore i zapisi ih u datoteku
  27.     datotekaOdgovori = fopen(nazivDatoteke, "w");
  28.  
  29.     if (datotekaOdgovori == NULL){
  30.         printf("\nGreska pri otvaranj datoteke\n");
  31.         return -1;
  32.     }
  33.  
  34.     printf("\nOdgovori studenta:\n");
  35.     for (i = 0; i < BROJ_STUDENTA; i++) {
  36.         generirajOdgovore(&odgovori[0]);
  37.         for (j = 0; j < BROJ_PITANJA; j++) {
  38.             printf("%c\t", odgovori[j]);
  39.             fputc (odgovori[j] , datotekaOdgovori);
  40.             if (j != BROJ_PITANJA-1) {
  41.                 fputc(' ', datotekaOdgovori);
  42.             }
  43.         }
  44.         fputc('\n', datotekaOdgovori);
  45.         printf("\n");
  46.     }
  47.  
  48.     fclose(datotekaOdgovori);
  49.  
  50.     //ispisi tocne odgovore
  51.     printf("\nTocni odgovori:\n");
  52.     for (i = 0; i < BROJ_PITANJA; i++) {
  53.         printf("%c\t", tocniOdgovori[i]);
  54.     }
  55.  
  56.     //dohvati odgovore i dodjeli ih studentima
  57.     datotekaOdgovori = fopen(nazivDatoteke, "r");
  58.     if (datotekaOdgovori == NULL) {
  59.         printf("\nGreska pri otvaranj datoteke\n");
  60.         return -1;
  61.     }
  62.  
  63.     odgovor = 0, student = 0, c = 0;
  64.     while ((c = fgetc(datotekaOdgovori)) != EOF) {
  65.         if (c >= 'A' && c < 'E' || c == '-') {
  66.             studenti[student][odgovor] = c;
  67.             odgovor++;
  68.         } else if (c == '\n') {
  69.             odgovor = 0;
  70.             student++;
  71.         }
  72.     }
  73.  
  74.     fclose(datotekaOdgovori);
  75.  
  76.     //ocjeni studente i ispisi rezultate
  77.     printf("\n\nBroj bodova studenta:\n");
  78.     ocjene = ocjeniStudente(studenti, tocniOdgovori);
  79.  
  80.     for (ocjena = 0; ocjena < BROJ_STUDENTA; ocjena++) {
  81.         printf("Student %d: %.2f\n", ocjena+1, ocjene[ocjena]);
  82.     }
  83.  
  84.     return 0;
  85. }
  86.  
  87. float* ocjeniStudente (char odgovoriStudenta[][BROJ_PITANJA], const char tocniOdgovori[]) {
  88.     static float ocjene[MAX_BROJ_STUDENTA];
  89.     int student, odgovor;
  90.  
  91.     for (student = 0; student < BROJ_STUDENTA; student++) {
  92.         ocjene[student] = 0.0;
  93.         for (odgovor = 0; odgovor < BROJ_PITANJA; odgovor++) {
  94.             if (odgovoriStudenta[student][odgovor] == tocniOdgovori[odgovor]) {
  95.                 ocjene[student] += 1;
  96.             } else if (odgovoriStudenta[student][odgovor] != '-' ) {
  97.                 ocjene[student] -= 0.5;
  98.             }
  99.         }
  100.     }
  101.  
  102.     return ocjene;
  103. }
  104.  
  105.  
  106. void generirajOdgovore (char* odgovori) {
  107.     char slucajniOdgovor, odgovor;
  108.     for (odgovor = 0; odgovor < BROJ_PITANJA; odgovor++) {
  109.         slucajniOdgovor = ((rand() % 5) + 65);
  110.         if (slucajniOdgovor < 'E') {
  111.             odgovori[odgovor] = slucajniOdgovor;
  112.         } else {
  113.             odgovori[odgovor] = '-';
  114.         }
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment