Advertisement
Guest User

musketar drugi zadatak

a guest
Aug 23rd, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.85 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2.  
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6.  
  7. typedef struct prijava{
  8. char brojIndeksa[9];
  9. char imePrezime[30];
  10. char nazivPredmeta[20];
  11. int ocena;
  12. }PRIJAVA;
  13.  
  14. typedef struct predmet{
  15. char nazivPredmeta[20];
  16. double prosek;
  17. }PREDMET;
  18.  
  19. typedef struct element * POKAZIVAC;
  20.  
  21. typedef struct element{
  22. PRIJAVA podatak;
  23. POKAZIVAC sledeci;
  24. }ELEMENT;
  25.  
  26. typedef struct glavaRep{
  27. POKAZIVAC glava;
  28. POKAZIVAC rep;
  29. } * LISTA;
  30.  
  31. typedef PREDMET NIZ[100];
  32.  
  33. void kreirajListu(LISTA * lista){
  34. (*lista) = malloc(sizeof(LISTA));
  35. (*lista)->glava = NULL;
  36. (*lista)->rep = NULL;
  37. }
  38.  
  39. void ubaciNaPocetak(LISTA lista, PRIJAVA podatak){
  40. POKAZIVAC noviElement = malloc(sizeof(ELEMENT));
  41.  
  42. noviElement->podatak = podatak;
  43. noviElement->sledeci = lista->glava;
  44.  
  45. lista->glava = noviElement;
  46.  
  47. if(lista->rep==NULL){
  48. lista->rep = noviElement;
  49. }
  50. }
  51.  
  52. int daLiTajPredmetVecPostojiUNizu(NIZ niz,int brEl,char nazivPredmeta[20]){
  53. int i;
  54.  
  55. for(i=0;i<brEl;i++){
  56. if(strcmp(niz[i].nazivPredmeta,nazivPredmeta)==0){
  57. return 1;
  58. }
  59. }
  60. return 0;
  61. }
  62.  
  63. void pravljenjeNizaPredmeta(NIZ niz,int *brEl,LISTA lista){
  64. POKAZIVAC pomocni = lista->glava;
  65.  
  66. while(pomocni!=NULL){
  67. if(daLiTajPredmetVecPostojiUNizu(niz,*brEl,pomocni->podatak.nazivPredmeta)==0){
  68. strcpy(niz[*brEl].nazivPredmeta,pomocni->podatak.nazivPredmeta);
  69. (*brEl)++;
  70. }
  71. pomocni = pomocni->sledeci;
  72. }
  73.  
  74.  
  75. }
  76.  
  77. double funkcijaProsek(LISTA lista,char nazivPredmeta[20]){
  78. POKAZIVAC pomocni = lista->glava;
  79. int suma=0;
  80. double brojac =0;
  81.  
  82. while(pomocni!=NULL){
  83. if(strcmp(pomocni->podatak.nazivPredmeta,nazivPredmeta)==0){
  84. suma = suma + pomocni->podatak.ocena;
  85. brojac++;
  86. }
  87. pomocni = pomocni->sledeci;
  88. }
  89. return suma/brojac;
  90. }
  91.  
  92. void punjenjeProseka(NIZ niz,int brEl,LISTA lista){
  93. int i;
  94.  
  95. for(i=0;i<brEl;i++){
  96. niz[i].prosek = funkcijaProsek(lista,niz[i].nazivPredmeta);
  97. }
  98. }
  99.  
  100.  
  101. //3 ZADATAK!!! 2. nacin
  102. int daLiSmoVecRadiliSaTimStudentom(LISTA lista,POKAZIVAC trenutni){
  103. POKAZIVAC pomocniLevo = lista->glava;
  104.  
  105. while(pomocniLevo != trenutni){
  106. if(strcmp(pomocniLevo->podatak.brojIndeksa,trenutni->podatak.brojIndeksa)==0){
  107. return 1;
  108. }
  109. pomocniLevo = pomocniLevo->sledeci;
  110. }
  111. return 0;
  112. }
  113.  
  114. double izracunajProsekStudenta(LISTA lista,PRIJAVA podatak){
  115. POKAZIVAC pomocni = lista->glava;
  116. int suma=0;
  117. double brojac=0;
  118.  
  119. while(pomocni!=NULL){
  120. if(strcmp(pomocni->podatak.brojIndeksa,podatak.brojIndeksa)==0){
  121. suma = suma + pomocni->podatak.ocena;
  122. brojac++;
  123. }
  124. pomocni= pomocni->sledeci;
  125. }
  126. return suma/brojac;
  127. }
  128.  
  129. void pravljenjeIzvestaja(LISTA lista){
  130. FILE * datoteka = fopen("izvestajTreciZadatak.txt","w");
  131. POKAZIVAC pomocni = lista->glava;
  132. double prosek;
  133.  
  134. if(datoteka == NULL){
  135. return;
  136. }
  137.  
  138. while(pomocni != NULL){
  139. if(daLiSmoVecRadiliSaTimStudentom(lista,pomocni)==0){
  140. prosek = izracunajProsekStudenta(lista,pomocni->podatak);
  141.  
  142.  
  143. // fprintf();
  144. // fprintf();
  145. }
  146. pomocni = pomocni->sledeci;
  147. }
  148. fclose(datoteka);
  149. }
  150.  
  151. int main(void){
  152. PRIJAVA p1,p2,p3,p4;
  153. LISTA lista;
  154. NIZ niz;
  155. int brEl=0;
  156.  
  157.  
  158. strcpy(p1.brojIndeksa,"2014/0161");
  159. strcpy(p1.imePrezime,"Matija Milekic");
  160. strcpy(p1.nazivPredmeta,"OIKT");
  161. p1.ocena = 9;
  162.  
  163. strcpy(p2.brojIndeksa,"2014/0161");
  164. strcpy(p2.imePrezime,"Matija Milekic");
  165. strcpy(p2.nazivPredmeta,"AROS");
  166. p2.ocena = 10;
  167.  
  168. strcpy(p3.brojIndeksa,"2014/0161");
  169. strcpy(p3.imePrezime,"Matija Milekic");
  170. strcpy(p3.nazivPredmeta,"OIKT");
  171. p3.ocena = 6;
  172.  
  173. strcpy(p4.brojIndeksa,"2014/0161");
  174. strcpy(p4.imePrezime,"Matija Milekic");
  175. strcpy(p4.nazivPredmeta,"UIS");
  176. p4.ocena = 7;
  177.  
  178. kreirajListu(&lista);
  179.  
  180. ubaciNaPocetak(lista,p1);
  181. ubaciNaPocetak(lista,p2);
  182. ubaciNaPocetak(lista,p3);
  183. ubaciNaPocetak(lista,p4);
  184.  
  185. pravljenjeNizaPredmeta(niz,&brEl,lista);
  186. punjenjeProseka(niz,brEl,lista);
  187.  
  188. return 0;
  189. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement