Advertisement
Guest User

Untitled

a guest
Aug 21st, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1.  
  2. //31. Sijecnja 2018.
  3. //Napisati program koji iz dvije datoteke cita prezimena i imena studenata kao i ocjene koje su dobili iz tih predmeta i generira vezanu listu.
  4. //Struktura koja se koristi za pohranu podataka treba sadrzavati ime i prezime studenta, ocjenu iz P2 i ocjenu iz AiSP te potrebne pokazivace.
  5. //
  6. //Program radi na sljedeci nacin :
  7. //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.
  8. //B) Iz datoteke AiSP.txt se citaju podaci i ukoliko nije polozio dodaje se novi cvor liste. (Za 2)
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20. #include<stdio.h>
  21. #include<stdlib.h>
  22. #include<string.h>
  23.  
  24.  
  25.  
  26. typedef struct lista *Position;
  27. typedef struct lista
  28. {
  29. char *ime;
  30. char *prezime;
  31. int p2;
  32. int aisp;
  33. Position next;
  34.  
  35. }Lista;
  36. Position Alociraj(int, int);
  37. void Generiraj(Position, char *,char *,int,int);
  38. void Ispis(Position);
  39. void CitajDrugu(Position);
  40.  
  41.  
  42. void CitajDrugu(Position h)
  43. {
  44. Position neki;
  45. Position pocetak=h;
  46. char ime[20];
  47. char prezime[15];
  48. int ocj=0;
  49. int i=0;
  50.  
  51. FILE *fd;
  52. fd=fopen("asp.txt","r");
  53. if(fd==NULL)
  54. perror("greska je");
  55. else
  56. while(!feof(fd))
  57. {
  58. i=0;
  59. fscanf(fd," %s %s %d", ime,prezime, &ocj);
  60. while(h->next!=NULL)
  61. {
  62.  
  63. if((strcmp(h->next->ime,ime)==0) && (strcmp(h->next->prezime,prezime)==0))
  64. {
  65. h->next->aisp=ocj;
  66. i=1;
  67.  
  68. }
  69.  
  70. h=h->next;
  71.  
  72. }
  73. h=pocetak;
  74.  
  75. if(i==0)
  76. {
  77. h=pocetak;
  78. neki=Alociraj(strlen(ime), strlen(prezime));
  79. Generiraj(neki, ime,prezime,0,ocj);
  80. neki->next=h->next;
  81. h->next=neki;
  82. }
  83.  
  84.  
  85. }
  86. fclose(fd);
  87. }
  88.  
  89.  
  90.  
  91. void Ispis(Position h)
  92. {
  93. while(h!=NULL)
  94. {
  95. printf(" \n%s %s %d %d\n", h->ime, h->prezime, h->p2, h->aisp);
  96. h=h->next;
  97. }
  98.  
  99.  
  100. }
  101.  
  102.  
  103.  
  104. void Generiraj(Position el, char *im,char *pr,int ocj, int dr)
  105. {
  106. strcpy(el->ime,im);
  107. strcpy(el->prezime,pr);
  108. el->p2=ocj;
  109. el->aisp=dr;
  110.  
  111.  
  112. }
  113.  
  114. Position Alociraj(int duljinaim, int duljinapr)
  115. {
  116. Position el=(Position)malloc(sizeof(Lista));
  117. el->ime=(char*)malloc(duljinaim*sizeof(char));
  118. el->prezime=(char*)malloc(duljinapr*sizeof(char));
  119.  
  120.  
  121. return el;
  122. }
  123.  
  124.  
  125. void CitajIzPrve(Position h)
  126. {
  127. Position novi;
  128. char ime[30];
  129. char prezime[30];
  130. int ocjena=0;
  131. FILE *fp;
  132. fp=fopen("p2.txt","r");
  133. if(fp==NULL)
  134. perror("greska");
  135. else
  136. while(!feof(fp))
  137. {
  138.  
  139. fscanf(fp, " %s %s %d", ime, prezime, &ocjena);
  140. //printf(" %s %s %d", ime,prezime, ocjena);
  141. novi=Alociraj(strlen(ime), strlen(prezime));
  142. Generiraj(novi, ime,prezime, ocjena,0);
  143.  
  144. novi->next=h->next;
  145. h->next=novi;
  146.  
  147. }
  148.  
  149. fclose(fp);
  150. }
  151.  
  152. int main()
  153. {
  154. Lista prva;
  155. prva.next=NULL;
  156. CitajIzPrve(&prva);
  157. printf("PRVA:\n");
  158. Ispis(prva.next);
  159. printf("------------------");
  160. CitajDrugu(&prva);
  161. Ispis(prva.next);
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement