Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)

Paste

Pasted as C by L10_Top_student ( 3 years ago )
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Student {
    char ime[20];
    char prezime[20];
};

struct Ocjena {
    struct Student s;
    char predmet[100];
    int ocjena;
};

struct Predmet {
    int id;
    char naziv[100];
    float prosjek;
};

int isti_string(char prvi[], char drugi[]) {
    int duzina = 0, a = 0, b = 0, i = 0;

    for (a = 0; prvi[a] != '\0'; a++);
    for (b = 0; drugi[b] != '\0'; b++);

    if (a != b) return 0;
    duzina = a;

    for (i = 0; i < duzina; i++) {
        if (prvi[i] != drugi[i]) {
            return 0;
        }
    }

    return 1;
}

int prvi_je_manji(struct Student prvi, struct Student drugi) {
    int duzina = 0, a = 0, b = 0, i = 0;

    for (a = 0; prvi.prezime[a] != '\0'; a++);
    for (b = 0; drugi.prezime[b] != '\0'; b++);

    duzina = (a < b) ? a : b;

    for (i = 0; i < duzina; i++) {
        if (prvi.prezime[i] == drugi.prezime[i]) {
            continue;
        } else {
            return prvi.prezime[i] < drugi.prezime[i];
        }
    }

    return 0;
}

struct Student top_student(struct Ocjena niz[], int velicina) {
    int i = 0, j = 0, brojac = 0, naj_student = 0;
    double prosjek = 0, max_prosjek = 0;

    for (i = 0; i < velicina; i++) {
        for (j = 0; j < velicina; j++) {
            if (isti_string(niz[i].s.ime, niz[j].s.ime) && isti_string(niz[i].s.prezime, niz[j].s.prezime)) {
                prosjek += niz[j].ocjena;
                brojac++;
            }
        }

        prosjek /= brojac;

        if (prosjek > max_prosjek) {
            max_prosjek = prosjek;
            naj_student = i;
        } else if (prosjek == max_prosjek) {
            if (prvi_je_manji(niz[i].s, niz[naj_student].s)) {
                max_prosjek = prosjek;
                naj_student = i;
            }
        }

        prosjek = brojac = 0;
    }

    return niz[naj_student].s;
}

int ucitaj_ocjene(struct Ocjena ocjene[], int kapacitet) {
    int i = 0;

    FILE *ulaz = fopen("ocjene.dat", "rb");
    if (ulaz == NULL) {
        printf("Datoteka ne postoji\n");
        exit(0);
    }

    while (fread(&ocjene[i], sizeof(struct Ocjena), 1, ulaz) == 1 && i < kapacitet) {
        i++;
    }

    fclose(ulaz);

    return i;
}

int ucitaj_predmete(struct Predmet predmeti[], int kapacitet) {
    int i = 0, j = 0;
    char znak;

    FILE *ulaz = fopen("predmeti.txt", "r");
    if (ulaz == NULL) {
        printf("Datoteka ne postoji\n");
        exit(0);
    }

    while (i < kapacitet) {
        j = fscanf(ulaz, "%d", &predmeti[i].id);
        if (j != 1) break;

        fgetc(ulaz); // zarez

        j = 0;
        while ((znak = fgetc(ulaz)) != ',') {
            predmeti[i].naziv[j++] = znak;
        }

        predmeti[i].naziv[j] = '\0';

        fscanf(ulaz, "%f", &predmeti[i].prosjek);
        i++;
    }

    fclose(ulaz);

    return i;
}

struct Predmet max_prosjek(struct Predmet predmeti[], int velicina) {
    int i = 0, naj_predmet = 0;

    for (i = 0; i < velicina; i++) {
        if (predmeti[i].prosjek > predmeti[naj_predmet].prosjek) {
            naj_predmet = i;
        }
    }

    return predmeti[naj_predmet];
}

void predmet_studenti(struct Predmet predmeti[], int broj_predmeta, struct Ocjena ocjene[], int broj_ocjena) {
    struct Predmet naj_predmet = max_prosjek(predmeti, broj_predmeta);
    int i = 0;

    for (i = 0; i < broj_ocjena; i++) {
        if (isti_string(naj_predmet.naziv, ocjene[i].predmet)) {
            printf("%s %s %d\n", ocjene[i].s.ime, ocjene[i].s.prezime, ocjene[i].ocjena);
        }
    }
}

void zapisi_predmete(struct Predmet predmeti[], int velicina) {
    int i = 0;

    FILE *izlaz = fopen("predmeti.txt", "w");
    if (izlaz == NULL) {
        printf("Datoteka ne postoji\n");
        exit(0);
    }

    for (i = 0; i < velicina; i++) {
        fprintf(izlaz, "%d,%s,%.2f\n", predmeti[i].id, predmeti[i].naziv, predmeti[i].prosjek);
    }

    fclose(izlaz);
}

int main() {

	return 0;
}

 

Revise this Paste

Your Name: Code Language: