Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- typedef struct prijava{
- char brojIndeksa[9];
- char imePrezime[30];
- char nazivPredmeta[20];
- int ocena;
- }PRIJAVA;
- typedef struct predmet{
- char nazivPredmeta[20];
- double prosek;
- }PREDMET;
- typedef struct element * POKAZIVAC;
- typedef struct element{
- PRIJAVA podatak;
- POKAZIVAC sledeci;
- }ELEMENT;
- typedef struct glavaRep{
- POKAZIVAC glava;
- POKAZIVAC rep;
- } * LISTA;
- typedef PREDMET NIZ[100];
- void kreirajListu(LISTA * lista){
- (*lista) = malloc(sizeof(LISTA));
- (*lista)->glava = NULL;
- (*lista)->rep = NULL;
- }
- void ubaciNaPocetak(LISTA lista, PRIJAVA podatak){
- POKAZIVAC noviElement = malloc(sizeof(ELEMENT));
- noviElement->podatak = podatak;
- noviElement->sledeci = lista->glava;
- lista->glava = noviElement;
- if(lista->rep==NULL){
- lista->rep = noviElement;
- }
- }
- int daLiTajPredmetVecPostojiUNizu(NIZ niz,int brEl,char nazivPredmeta[20]){
- int i;
- for(i=0;i<brEl;i++){
- if(strcmp(niz[i].nazivPredmeta,nazivPredmeta)==0){
- return 1;
- }
- }
- return 0;
- }
- void pravljenjeNizaPredmeta(NIZ niz,int *brEl,LISTA lista){
- POKAZIVAC pomocni = lista->glava;
- while(pomocni!=NULL){
- if(daLiTajPredmetVecPostojiUNizu(niz,*brEl,pomocni->podatak.nazivPredmeta)==0){
- strcpy(niz[*brEl].nazivPredmeta,pomocni->podatak.nazivPredmeta);
- (*brEl)++;
- }
- pomocni = pomocni->sledeci;
- }
- }
- double funkcijaProsek(LISTA lista,char nazivPredmeta[20]){
- POKAZIVAC pomocni = lista->glava;
- int suma=0;
- double brojac =0;
- while(pomocni!=NULL){
- if(strcmp(pomocni->podatak.nazivPredmeta,nazivPredmeta)==0){
- suma = suma + pomocni->podatak.ocena;
- brojac++;
- }
- pomocni = pomocni->sledeci;
- }
- return suma/brojac;
- }
- void punjenjeProseka(NIZ niz,int brEl,LISTA lista){
- int i;
- for(i=0;i<brEl;i++){
- niz[i].prosek = funkcijaProsek(lista,niz[i].nazivPredmeta);
- }
- }
- //3 ZADATAK!!! 2. nacin
- int daLiSmoVecRadiliSaTimStudentom(LISTA lista,POKAZIVAC trenutni){
- POKAZIVAC pomocniLevo = lista->glava;
- while(pomocniLevo != trenutni){
- if(strcmp(pomocniLevo->podatak.brojIndeksa,trenutni->podatak.brojIndeksa)==0){
- return 1;
- }
- pomocniLevo = pomocniLevo->sledeci;
- }
- return 0;
- }
- double izracunajProsekStudenta(LISTA lista,PRIJAVA podatak){
- POKAZIVAC pomocni = lista->glava;
- int suma=0;
- double brojac=0;
- while(pomocni!=NULL){
- if(strcmp(pomocni->podatak.brojIndeksa,podatak.brojIndeksa)==0){
- suma = suma + pomocni->podatak.ocena;
- brojac++;
- }
- pomocni= pomocni->sledeci;
- }
- return suma/brojac;
- }
- void pravljenjeIzvestaja(LISTA lista){
- FILE * datoteka = fopen("izvestajTreciZadatak.txt","w");
- POKAZIVAC pomocni = lista->glava;
- double prosek;
- if(datoteka == NULL){
- return;
- }
- while(pomocni != NULL){
- if(daLiSmoVecRadiliSaTimStudentom(lista,pomocni)==0){
- prosek = izracunajProsekStudenta(lista,pomocni->podatak);
- // fprintf();
- // fprintf();
- }
- pomocni = pomocni->sledeci;
- }
- fclose(datoteka);
- }
- int main(void){
- PRIJAVA p1,p2,p3,p4;
- LISTA lista;
- NIZ niz;
- int brEl=0;
- strcpy(p1.brojIndeksa,"2014/0161");
- strcpy(p1.imePrezime,"Matija Milekic");
- strcpy(p1.nazivPredmeta,"OIKT");
- p1.ocena = 9;
- strcpy(p2.brojIndeksa,"2014/0161");
- strcpy(p2.imePrezime,"Matija Milekic");
- strcpy(p2.nazivPredmeta,"AROS");
- p2.ocena = 10;
- strcpy(p3.brojIndeksa,"2014/0161");
- strcpy(p3.imePrezime,"Matija Milekic");
- strcpy(p3.nazivPredmeta,"OIKT");
- p3.ocena = 6;
- strcpy(p4.brojIndeksa,"2014/0161");
- strcpy(p4.imePrezime,"Matija Milekic");
- strcpy(p4.nazivPredmeta,"UIS");
- p4.ocena = 7;
- kreirajListu(&lista);
- ubaciNaPocetak(lista,p1);
- ubaciNaPocetak(lista,p2);
- ubaciNaPocetak(lista,p3);
- ubaciNaPocetak(lista,p4);
- pravljenjeNizaPredmeta(niz,&brEl,lista);
- punjenjeProseka(niz,brEl,lista);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement