Guest User

Untitled

a guest
May 21st, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.30 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <math.h>
  4. #include <string.h>
  5.  
  6. typedef struct stud{
  7. char ime[30];
  8. char prezime[30];
  9. char brind[10];
  10. int godstd;
  11. struct stud *sledeci;
  12. }scvor;
  13.  
  14.  
  15. int brStd(scvor *vrh){
  16. int brojStd=0;
  17. while(vrh){
  18. brojStd++;
  19. vrh=vrh->sledeci;}
  20. return brojStd;}
  21.  
  22. void unos(scvor **vrh,char *ime,char *prezime, char *brind, int godstd,int pozicija){
  23.  
  24. if((pozicija>=0) && (pozicija<=brStd(*vrh))){
  25. int i;
  26. scvor *novi,*prethodni=*vrh,*tekuci=*vrh;
  27. novi=(scvor *)malloc(sizeof(scvor));
  28. strcpy(novi->ime,ime);
  29. strcpy(novi->prezime,prezime);
  30. strcpy(novi->brind,brind);
  31. novi->godstd=godstd;
  32. novi->sledeci=NULL;
  33. for(i=0;i<pozicija;i++){
  34. prethodni=tekuci;
  35. tekuci=tekuci->sledeci;
  36. }
  37. novi->sledeci=tekuci;
  38. if(tekuci==*vrh)
  39. *vrh=novi;
  40. else
  41. prethodni->sledeci=novi;
  42. } printf("\nbravo");
  43. }
  44.  
  45. void ispisALL(scvor *vrh){
  46. printf("Prikaz studenata\n");
  47. if(vrh!=NULL){
  48. ispisALL(vrh->sledeci);
  49. printf("\n-------------------------\n");
  50. puts(vrh->ime);
  51. puts(vrh->prezime);
  52. puts(vrh->brind);
  53. printf("%d", vrh->godstd);
  54. }
  55. }
  56.  
  57. void brisiALL(scvor **vrh){
  58. scvor *temp;
  59. while(*vrh){
  60. temp=*vrh;
  61. *vrh=(*vrh)->sledeci;
  62. free(temp);
  63. }
  64. }
  65.  
  66.  
  67.  
  68. /*ne zaboravi u mainu char index[30]; i gets */
  69. void brisiStd(scvor **vrh,char *index){
  70. scvor *tekuci=*vrh, *prethodni=NULL, *temp=NULL;
  71.  
  72. while(tekuci){
  73. if(!strcmp(tekuci->brind,index)){
  74. temp=tekuci;
  75. tekuci=tekuci->sledeci;
  76. if(temp==*vrh)
  77. *vrh=(*vrh)->sledeci;
  78. else{
  79. prethodni->sledeci=tekuci;
  80. free(temp);}
  81. }
  82. else{
  83. prethodni=tekuci;
  84. tekuci=tekuci->sledeci;}
  85. }
  86. }
  87.  
  88. void ducit(scvor **vrh){
  89. FILE *f=fopen("studenti.txt","r");
  90. char ime[20],prezime[20],brind[10];
  91. int godstd;
  92. while(fscanf(f,"%s %s %s d",ime,prezime,brind,&godstd)!=EOF){
  93. unos(vrh,ime,prezime,brind,godstd,brStd(*vrh));
  94. }
  95. fclose(f);
  96. }
  97.  
  98.  
  99. void dispis(scvor *vrh){
  100. FILE *f=fopen("studenti.txt","w");
  101. while(vrh){
  102. fprintf("Student %s %s %s %d",vrh->ime,vrh->prezime,vrh->brind,vrh->godstd);
  103. vrh=vrh->sledeci;}
  104. fclose(f);
  105. }
  106.  
  107. int main()
  108. {
  109. scvor *vrh=NULL;
  110.  
  111. int godstdp, opcija, pozp;
  112. char imep[30],prezimep[30],brindp[10],s[10];
  113. do
  114. {
  115. 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.Citanje datoteke \n\t8.Izlaz\n\n>>>>");
  116. scanf("%d",&opcija);
  117. switch(opcija)
  118. {
  119. case 1: ispisALL(vrh);
  120. break;
  121. case 2: printf("\nbroj studenata je:%d\n",brStd(vrh));
  122. break;
  123. case 3: printf("unesi ime:");
  124. fflush(stdin);
  125. gets(imep);
  126. printf("unesi prezime:");
  127. gets(prezimep);
  128. fflush(stdin);
  129. printf("unesi broj indeksa:");
  130. gets(brindp);
  131. fflush(stdin);
  132. printf("unesi godinu upisa:");
  133. scanf("%d",&godstdp);
  134. fflush(stdin);
  135. printf("unesi poziciju studenta u listi:");
  136. scanf("%d",&pozp);
  137. fflush(stdin);
  138. unos(&vrh,imep,prezimep,brindp,godstdp,pozp);
  139. break;
  140. case 4: printf("\nUnesite broj indeksa:");
  141. gets(s);
  142. fflush(stdin);
  143. brisiStd(&vrh,s);
  144. break;
  145. case 5: brisiALL(&vrh);
  146. break;
  147. case 6: dispis(vrh);
  148. break;
  149. case 7: ducit(&vrh);
  150. break;
  151. default: printf("Choose your destiny:");
  152. }} while(opcija!=8);
  153.  
  154. return 0;
  155.  
  156. }
Add Comment
Please, Sign In to add comment