Guest User

Untitled

a guest
May 21st, 2018
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5.  
  6. typedef struct student{
  7. char ime[20];
  8. char prez[20];
  9. char brind[10];
  10. int godupis;
  11. struct student *next;
  12. }Student;
  13.  
  14. void dodajS(Student **, char *, char *,char *, int , int );
  15. void prikazS(Student *);
  16. int brojs(Student *);
  17. void brisanjePoInd(Student **,char *);
  18. void sacuvajS(Student *);
  19. void ucitavanjeS(Student **);
  20. void brisanjeS(Student **);
  21.  
  22. int main()
  23. {
  24. Student *lista=NULL;
  25. ucitavanjeS(&lista);
  26. int a,godupp,pozp;
  27. char s[10],imep[20],prezp[20],brinp[20];
  28. do
  29. {
  30. printf("\n\tOpcije:\n\t1. Prikaz svih studenata:\n\t2. Broj studenata\n\t3. Dodavanje studenta\n\t4. Brisanje studenta po indeksu\n\t5. Brisanje studenata\n\t6. Sacuvavanje studenata\n\t7. Izlaz\n\n>>>>");
  31. scanf("%d",&a);
  32. switch(a)
  33. {
  34. case 1: prikazS(lista);
  35. break;
  36. case 2: printf("\nbroj studenta je:%d\n",brojs(lista));
  37. break;
  38. case 3: printf("unesi Ime:");
  39. scanf("%s",&imep);
  40. printf("unesi prezime:");
  41. scanf("%s",&prezp);
  42. printf("unesi broj indeksa:");
  43. scanf("%s",&brinp);
  44. printf("unesi godinu upisa:");
  45. scanf("%d",&godupp);
  46. printf("unesi poziciju studenta u listi:");
  47. scanf("%d",&pozp);
  48. dodajS(&lista,imep,prezp,brinp,godupp,pozp);
  49. break;
  50. case 4: printf("\nunesite broj indeksa:");
  51. scanf("%s",&s);
  52. brisanjePoInd(&lista,s);
  53. break;
  54. case 5: brisanjeS(&lista);
  55. break;
  56. case 6: sacuvajS(lista);
  57. break;
  58. case 7: break;
  59. default: printf("a da uneses neku od opcija?");
  60. }}while(a!=7);
  61.  
  62. return 0;
  63. }
  64.  
  65. void prikazS(Student* glava)
  66. {
  67. printf("\tPrikaz studenata:\n----------------------------------------------------\n");
  68.  
  69. while(glava)
  70. {
  71. printf("student: %s %s %s %d\n",glava->ime,glava->prez,glava->brind, glava->godupis);
  72. glava=glava->next;
  73. }
  74.  
  75. printf("\n----------------------------------------------------\n");
  76. }
  77.  
  78. int brojs(Student *glava)
  79. {
  80. int i=0;
  81. while(glava)
  82. {
  83. i++;
  84. glava=glava->next;
  85. }
  86. return i;
  87. }
  88.  
  89. void dodajS(Student **glava, char *ime, char *prez,char *brind, int godupis, int pozicija)
  90. {
  91. if((pozicija>=0) && (pozicija<=brojs(*glava)))
  92. {
  93. int i;
  94. Student *noviS=(Student *)malloc(sizeof(Student));
  95. Student *tekuci=*glava,*prethodni=*glava;
  96. strcpy(noviS->ime,ime);
  97. strcpy(noviS->prez,prez);
  98. strcpy(noviS->brind,brind);
  99. noviS->godupis=godupis;
  100. noviS->next=NULL;
  101. for(i=0;i<pozicija;i++)
  102. {
  103. prethodni=tekuci;
  104. tekuci=tekuci->next;
  105. }
  106. noviS->next=tekuci;
  107. if(tekuci==*glava)
  108. {
  109. *glava=noviS;
  110. }
  111. else
  112. prethodni->next=noviS;
  113. }
  114. printf("...");
  115. }
  116.  
  117. void brisanjePoInd(Student **glava,char *brind1)
  118. {
  119. Student *tekuci=*glava, *prethodni=*glava,*temp=NULL;
  120. while(tekuci)
  121. {
  122. if(!strcmp(tekuci->brind,brind1))
  123. {
  124. temp=tekuci;
  125. tekuci=tekuci->next;
  126. if(temp==*glava)
  127. {
  128. *glava=(* glava)->next;
  129. }
  130. else
  131. {
  132. prethodni->next=tekuci;
  133. }
  134. free(temp);
  135. }
  136. else
  137. {
  138. prethodni=tekuci;
  139. tekuci=tekuci->next;
  140. }
  141. }
  142. }
  143.  
  144. void brisanjeS(Student **glava)
  145. {
  146. Student *temp;
  147. while(*glava)
  148. {
  149. temp=*glava;
  150. *glava=(*glava)->next;
  151. free(temp);
  152. }
  153. }
  154.  
  155. void ucitavanjeS(Student **glava)
  156. {
  157. FILE *f=fopen("student.txt","r");
  158. char ime[20],prez[20],brind[10];
  159. int godupis;
  160.  
  161. while(fscanf(f,"%s %s %s %d",ime,prez,brind,&godupis)!=EOF)
  162. {
  163. dodajS(glava,ime,prez,brind,godupis, brojs(*glava));
  164. }
  165.  
  166. fclose(f);
  167. }
  168.  
  169. void sacuvajS(Student *glava)
  170. {
  171. FILE *f=fopen("student.txt","w");
  172.  
  173. while(glava!=NULL)
  174. {
  175. fprintf(f,"%s %s %s %d\n",glava->ime,glava->prez,glava->brind,glava->godupis);
  176. glava=glava->next;
  177. }
  178.  
  179. fclose(f);
  180. }
Add Comment
Please, Sign In to add comment