Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //31. Sijecnja 2018.
- //Napisati program koji iz dvije datoteke cita prezimena i imena studenata kao i ocjene koje su dobili iz tih predmeta i generira vezanu listu.
- //Struktura koja se koristi za pohranu podataka treba sadrzavati ime i prezime studenta, ocjenu iz P2 i ocjenu iz AiSP te potrebne pokazivace.
- //
- //Program radi na sljedeci nacin :
- //A) Iz datoteke P2.txt procita sve studente i njihove ocjene iz P2 pri cemu nije bitan nacin kreiranja liste.Ispisati listu. - Treba napraviti u prvih 45 min.
- //B) Iz datoteke AiSP.txt se citaju podaci i ukoliko nije polozio dodaje se novi cvor liste. (Za 2)
- #include<stdio.h>
- #include<stdlib.h>
- #include<string.h>
- typedef struct lista *Position;
- typedef struct lista
- {
- char *ime;
- char *prezime;
- int p2;
- int aisp;
- Position next;
- }Lista;
- Position Alociraj(int, int);
- void Generiraj(Position, char *,char *,int,int);
- void Ispis(Position);
- void CitajDrugu(Position);
- void CitajDrugu(Position h)
- {
- Position neki;
- Position pocetak=h;
- char ime[20];
- char prezime[15];
- int ocj=0;
- int i=0;
- FILE *fd;
- fd=fopen("asp.txt","r");
- if(fd==NULL)
- perror("greska je");
- else
- while(!feof(fd))
- {
- i=0;
- fscanf(fd," %s %s %d", ime,prezime, &ocj);
- while(h->next!=NULL)
- {
- if((strcmp(h->next->ime,ime)==0) && (strcmp(h->next->prezime,prezime)==0))
- {
- h->next->aisp=ocj;
- i=1;
- }
- h=h->next;
- }
- h=pocetak;
- if(i==0)
- {
- h=pocetak;
- neki=Alociraj(strlen(ime), strlen(prezime));
- Generiraj(neki, ime,prezime,0,ocj);
- neki->next=h->next;
- h->next=neki;
- }
- }
- fclose(fd);
- }
- void Ispis(Position h)
- {
- while(h!=NULL)
- {
- printf(" \n%s %s %d %d\n", h->ime, h->prezime, h->p2, h->aisp);
- h=h->next;
- }
- }
- void Generiraj(Position el, char *im,char *pr,int ocj, int dr)
- {
- strcpy(el->ime,im);
- strcpy(el->prezime,pr);
- el->p2=ocj;
- el->aisp=dr;
- }
- Position Alociraj(int duljinaim, int duljinapr)
- {
- Position el=(Position)malloc(sizeof(Lista));
- el->ime=(char*)malloc(duljinaim*sizeof(char));
- el->prezime=(char*)malloc(duljinapr*sizeof(char));
- return el;
- }
- void CitajIzPrve(Position h)
- {
- Position novi;
- char ime[30];
- char prezime[30];
- int ocjena=0;
- FILE *fp;
- fp=fopen("p2.txt","r");
- if(fp==NULL)
- perror("greska");
- else
- while(!feof(fp))
- {
- fscanf(fp, " %s %s %d", ime, prezime, &ocjena);
- //printf(" %s %s %d", ime,prezime, ocjena);
- novi=Alociraj(strlen(ime), strlen(prezime));
- Generiraj(novi, ime,prezime, ocjena,0);
- novi->next=h->next;
- h->next=novi;
- }
- fclose(fp);
- }
- int main()
- {
- Lista prva;
- prva.next=NULL;
- CitajIzPrve(&prva);
- printf("PRVA:\n");
- Ispis(prva.next);
- printf("------------------");
- CitajDrugu(&prva);
- Ispis(prva.next);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement