Advertisement
Guest User

Untitled

a guest
Feb 19th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct Porodiliste
  6. {
  7. int mesec;
  8. int godina;
  9. int brojdecaka;
  10. int brojdevojcica;
  11. struct Porodiliste* sledeca;
  12. } Porodiliste;
  13.  
  14. typedef struct Mesec{
  15. int mesec;
  16. int brojdece;
  17. struct Mesec *sledeci;
  18. }Mesec;
  19.  
  20. void IspisListe()
  21. {
  22. printf("(1)Ucitaj podatke u listu\n");
  23. printf("(2)Ispis broja meseci u kome je rodjeno vise od odredjenog broja dece\n");
  24. printf("(3)Ispis broja rodjenih decaka i devojcica u jednoj godini sortirano po ukupnom broju rodjenih\n");
  25. printf("(0)Izlaz iz programa\n");
  26. }
  27. Porodiliste *NapraviNovu(int m,int g, int brdecaka,int brdevojcica)
  28. {
  29. Porodiliste *nova=(Porodiliste *)malloc(sizeof(Porodiliste));
  30. nova->godina=g;
  31. nova->mesec=m;
  32. nova->brojdecaka=brdecaka;
  33. nova->brojdevojcica=brdevojcica;
  34. nova->sledeca=NULL;
  35. return nova;
  36. }
  37. Porodiliste *UbaciSortirano(Porodiliste *pocetak, Porodiliste *nova)
  38. {
  39. if(pocetak==NULL)
  40. {
  41. return nova;
  42. }
  43. if((pocetak->godina*12+pocetak->mesec)>(nova->godina*12+nova->mesec))
  44. {
  45. nova->sledeca = pocetak;
  46. return nova;
  47. }
  48. Porodiliste *tmp=pocetak;
  49. while(tmp->sledeca!=NULL)
  50. {
  51. if((tmp->sledeca->godina*12+tmp->sledeca->mesec)>(nova->godina*12+nova->mesec))
  52. {
  53. nova->sledeca=tmp->sledeca;
  54. tmp->sledeca=nova;
  55. return pocetak;
  56. }
  57. tmp=tmp->sledeca;
  58. }
  59. tmp->sledeca=nova;
  60. return pocetak;
  61. }
  62.  
  63. void ispisPorodilista(Porodiliste *p){
  64. printf("%d %d %d %d\n", p->mesec, p->godina, p->brojdecaka, p->brojdevojcica);
  65. }
  66.  
  67. void ispisiIzListe(Porodiliste *pocetak){
  68. if(pocetak==NULL){
  69. return;
  70. }
  71. Porodiliste *tmp=pocetak;
  72. while(tmp!=NULL){
  73. ispisPorodilista(tmp);
  74. tmp=tmp->sledeca;
  75. }
  76. }
  77.  
  78. Mesec *napraviMesec(Porodiliste *p){
  79. Mesec *novi=(Mesec *)malloc(sizeof(Mesec));
  80. novi->mesec=p->mesec;
  81. novi->brojdece=p->brojdecaka+p->brojdevojcica;
  82. novi->sledeci=NULL;
  83. return novi;
  84. }
  85.  
  86. Mesec *ubaciMesec(Mesec *pocetni, Porodiliste *p){
  87. if(pocetni==NULL){
  88. Mesec *novi=napraviMesec(p);
  89. return novi;
  90. }
  91. if(pocetni->mesec==p->mesec){
  92. pocetni->brojdece+=p->brojdecaka+p->brojdevojcica;
  93. return pocetni;
  94. }
  95. Mesec *tmp=pocetni;
  96. while(tmp->sledeci!=NULL){
  97. if(tmp->mesec==p->mesec){
  98. tmp->brojdece+=p->brojdecaka+p->brojdevojcica;
  99. return pocetni;
  100. }
  101. tmp=tmp->sledeci;
  102. }
  103. Mesec *novi=napraviMesec(p);
  104. tmp->sledeci=novi;
  105. return pocetni;
  106. }
  107.  
  108. void ispisMeseca(Mesec *m){
  109. printf("%d %d\n", m->mesec, m->brojdece);
  110. }
  111.  
  112. void ispisMeseci(Mesec *pocetni){
  113. if(pocetni==NULL){
  114. return;
  115. }
  116. Mesec *tmp=pocetni;
  117. while(tmp!=NULL){
  118. ispisMeseca(tmp);
  119. tmp=tmp->sledeci;
  120. }
  121. }
  122.  
  123. int main()
  124. {
  125. int opcija;
  126. Porodiliste *pocetak=(Porodiliste*)malloc(sizeof(Porodiliste));
  127. pocetak=NULL;
  128. do
  129. {
  130. if(opcija==1)
  131. {
  132. char fileName[100];
  133. printf("Ucitajte ime fajla: ");
  134. scanf("%s",fileName);
  135. FILE *file=fopen(fileName,"r");
  136. char linija[100];
  137. int m,g,brdecaka,brdevojcica;
  138. char* token;
  139. while(fgets(linija,100,file)!=NULL)
  140. {
  141. token=strtok(linija," ");
  142. m=strtol(token,NULL,10);
  143. token=strtok(NULL," ");
  144. g=strtol(token,NULL,10);
  145. token=strtok(NULL," ");
  146. brdecaka=strtol(token,NULL,10);
  147. token=strtok(NULL,"\n");
  148. brdevojcica=strtol(token,NULL,10);
  149. Porodiliste* nova = NapraviNovu(m,g,brdecaka,brdevojcica);
  150. pocetak=UbaciSortirano(pocetak,nova);
  151. }
  152. ispisiIzListe(pocetak);
  153. }
  154. if(opcija==2)
  155. {
  156. Mesec *pocetni=(Mesec *)malloc(sizeof(Mesec));
  157. pocetni=NULL;
  158. Porodiliste *tmp=pocetak;
  159. while(tmp!=NULL){
  160. pocetni=ubaciMesec(pocetni, tmp);
  161. tmp=tmp->sledeca;
  162. }
  163. ispisMeseci(pocetni);
  164. }
  165. if(opcija==3)
  166. {
  167.  
  168. }
  169. IspisListe();
  170. scanf("%d",&opcija);
  171. }
  172. while(opcija!=0);
  173. return 0;
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement