Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- struct Predmet {
- int id;
- char naziv[50];
- };
- void unesi(char *string, int vel) {
- char znak = getchar();
- int i = 0;
- if (znak == '\n') znak = getchar();
- while (i < vel - 1 && znak != '\n') {
- string[i] = znak;
- i++;
- znak = getchar();
- }
- string[i] = '\0';
- }
- int ucitaj(struct Predmet *predmeti, int limit) {
- int i = 0, j = 0;
- char c = 'a';
- FILE *ulaz;
- ulaz = fopen("predmeti.txt", "r");
- if (!ulaz) {
- printf("Greska pri otvaranju datoteke za citanje.\n");
- return 0;
- }
- while (i < limit && fscanf(ulaz, "%d ", &predmeti[i].id) == 1) {
- do {
- c = fgetc(ulaz);
- predmeti[i].naziv[j] = c;
- j++;
- } while (j < 30 && c != 10);
- predmeti[i].naziv[j - 1] = '\0';
- j = 0;
- i++;
- }
- fclose(ulaz);
- return i;
- }
- void statistikaPredmeta() {
- struct Predmet predmeti[10];
- int velicina = ucitaj(predmeti, 10);
- int i, isti = 1, idUnos, brIndexa, predmet, ocjena;
- int izasli = 0, polozili = 0, suma = 0;
- char unos[40];
- double prosjek, prolaznost;
- FILE *ulaz;
- do {
- printf(" Unesite predmet: ");
- unesi(unos, 40);
- for (i = 0; i < velicina; i++) {
- if (!strcmp(unos, predmeti[i].naziv)) {
- idUnos = predmeti[i].id;
- isti = 0;
- break;
- }
- }
- if (i == velicina)
- printf("Nepostojeci predmet!\n");
- } while (isti);
- ulaz = fopen("ispiti.txt", "r");
- if (ulaz == NULL) {
- printf("Pogreska kod otvaranja datoteke!");
- return;
- }
- while (fscanf(ulaz, "%d %d %d", &brIndexa, &predmet, &ocjena) == 3) {
- if (idUnos == predmet) {
- suma += ocjena;
- izasli++;
- if (ocjena >= 6)
- polozili++;
- }
- }
- fclose(ulaz);
- if (!izasli) {
- printf("Zalimo, ali ne postoje podaci o predmetu %s!\n", unos);
- return;
- }
- prosjek = (float)suma / izasli;
- prolaznost = ((float)polozili / izasli) * 100;
- printf("Prosjecna ocjena: %.2f", prosjek);
- printf("\nProlaznost: %g%%\n", prolaznost);
- }
- void statistikaStudenta() {
- int unos, index, predmet, ocjena;
- int slusao = 0, polozio = 0, suma = 0;
- double prosjek;
- FILE *ulaz;
- printf(" Unesite broj indexa: ");
- scanf("%d", &unos);
- ulaz = fopen("ispiti.txt", "r");
- if (!ulaz) {
- printf("Greska pri otvaranju datoteke za citanje!");
- return;
- }
- while (fscanf(ulaz, "%d %d %d", &index, &predmet, &ocjena) == 3) {
- if (unos == index) {
- slusao++;
- if (ocjena >= 6) {
- polozio++;
- suma += ocjena;
- }
- }
- }
- fclose(ulaz);
- if (!slusao) {
- printf("Zalimo, ali ne postoje podaci o studentu sa brojem indexa %d!\n", unos);
- return;
- }
- prosjek = (double)suma / polozio;
- printf("Student je slusao %d predmeta, a polozio %d (%d%%).\n", slusao, polozio, (int)(polozio/slusao) * 100);
- printf("Prosjecna ocjena polozenih predmeta je %.1f\n", prosjek);
- }
- int main() {
- int opcija;
- do {
- printf("Unesite 1 za statistiku studenta, 2 za statistiku predmeta, 0 za izlaz:");
- scanf("%d", &opcija);
- switch (opcija) {
- case 0:
- break;
- case 1:
- statistikaStudenta();
- break;
- case 2:
- statistikaPredmeta();
- break;
- default:
- printf("Pogresan unos!\n");
- }
- } while (opcija != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement