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