Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <time.h>
- #include <stdlib.h>
- #include <stdio.h>
- #define BROJ_PITANJA 6
- #define MAX_BROJ_STUDENTA 100
- int BROJ_STUDENTA = 0;
- FILE* datotekaOdgovori;
- float* ocjeniStudente (char odgovoriStudenta[][BROJ_PITANJA], const char tocniOdgovori[]);
- void generirajOdgovore (char*);
- int main() {
- srand(unsigned (time(NULL)));
- int i = 0, j = 0, student = 0, odgovor = 0, ocjena = 0, c = 0;
- const char nazivDatoteke[] = "studenti_ocjene.txt";
- const char tocniOdgovori[] = {'D', 'B', 'C', 'A', 'A', 'C'};
- char studenti[MAX_BROJ_STUDENTA][BROJ_PITANJA];
- char odgovori[BROJ_PITANJA];
- float* ocjene;
- printf("Broj studenta?: ");
- scanf("%d", &BROJ_STUDENTA);
- //generiraj slucajne odgovore i zapisi ih u datoteku
- datotekaOdgovori = fopen(nazivDatoteke, "w");
- if (datotekaOdgovori == NULL){
- printf("\nGreska pri otvaranj datoteke\n");
- return -1;
- }
- printf("\nOdgovori studenta:\n");
- for (i = 0; i < BROJ_STUDENTA; i++) {
- generirajOdgovore(&odgovori[0]);
- for (j = 0; j < BROJ_PITANJA; j++) {
- printf("%c\t", odgovori[j]);
- fputc (odgovori[j] , datotekaOdgovori);
- if (j != BROJ_PITANJA-1) {
- fputc(' ', datotekaOdgovori);
- }
- }
- fputc('\n', datotekaOdgovori);
- printf("\n");
- }
- fclose(datotekaOdgovori);
- //ispisi tocne odgovore
- printf("\nTocni odgovori:\n");
- for (i = 0; i < BROJ_PITANJA; i++) {
- printf("%c\t", tocniOdgovori[i]);
- }
- //dohvati odgovore i dodjeli ih studentima
- datotekaOdgovori = fopen(nazivDatoteke, "r");
- if (datotekaOdgovori == NULL) {
- printf("\nGreska pri otvaranj datoteke\n");
- return -1;
- }
- odgovor = 0, student = 0, c = 0;
- while ((c = fgetc(datotekaOdgovori)) != EOF) {
- if (c >= 'A' && c < 'E' || c == '-') {
- studenti[student][odgovor] = c;
- odgovor++;
- } else if (c == '\n') {
- odgovor = 0;
- student++;
- }
- }
- fclose(datotekaOdgovori);
- //ocjeni studente i ispisi rezultate
- printf("\n\nBroj bodova studenta:\n");
- ocjene = ocjeniStudente(studenti, tocniOdgovori);
- for (ocjena = 0; ocjena < BROJ_STUDENTA; ocjena++) {
- printf("Student %d: %.2f\n", ocjena+1, ocjene[ocjena]);
- }
- return 0;
- }
- float* ocjeniStudente (char odgovoriStudenta[][BROJ_PITANJA], const char tocniOdgovori[]) {
- static float ocjene[MAX_BROJ_STUDENTA];
- int student, odgovor;
- for (student = 0; student < BROJ_STUDENTA; student++) {
- ocjene[student] = 0.0;
- for (odgovor = 0; odgovor < BROJ_PITANJA; odgovor++) {
- if (odgovoriStudenta[student][odgovor] == tocniOdgovori[odgovor]) {
- ocjene[student] += 1;
- } else if (odgovoriStudenta[student][odgovor] != '-' ) {
- ocjene[student] -= 0.5;
- }
- }
- }
- return ocjene;
- }
- void generirajOdgovore (char* odgovori) {
- char slucajniOdgovor, odgovor;
- for (odgovor = 0; odgovor < BROJ_PITANJA; odgovor++) {
- slucajniOdgovor = ((rand() % 5) + 65);
- if (slucajniOdgovor < 'E') {
- odgovori[odgovor] = slucajniOdgovor;
- } else {
- odgovori[odgovor] = '-';
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment