Advertisement
Guest User

Untitled

a guest
Dec 18th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. #include <math.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. typedef struct pica{
  7. int cena;
  8. char grad[20];
  9. char drzava[20];
  10. char pizza[20];
  11. struct pica *sledeci;
  12. };
  13. typedef struct glava{
  14. struct pica *phead;
  15. };
  16.  
  17. void inici(struct glava *g)
  18. {
  19. g->phead=NULL;
  20. }
  21.  
  22. void dodajNaPocetak(struct glava *g, struct pica *novaPica)
  23. {
  24. if(g==NULL){
  25. g->phead=novaPica;
  26. }
  27. else
  28. {
  29. novaPica->sledeci=g->phead;
  30. g->phead=novaPica;
  31. }
  32. }
  33.  
  34. struct pica *noviCvor( int cena, char grad[], char drzava[], char pizza[])
  35. {
  36. struct pica *n=malloc(sizeof(struct pica));
  37. if(n==NULL)
  38. {
  39. printf("NEmate dovoljno Rama");
  40. exit(EXIT_FAILURE);
  41. }
  42.  
  43. n->cena=cena;
  44. strcpy(n->grad,grad);
  45. strcpy(n->drzava,drzava);
  46. strcpy(n->pizza,pizza);
  47. n->sledeci=NULL;
  48.  
  49. return n;
  50. }
  51. FILE *otvori(char *naziv, char *mode)
  52. {
  53. FILE *k=fopen(naziv,mode);
  54. if(k==NULL)
  55. {
  56. printf("Niste uneli dobro dadoteku");
  57. exit(1);
  58. }
  59. return k;
  60. }
  61. void dodajNaKraj(struct glava *g, struct pica *novaPica)
  62. {
  63. if(g->phead==NULL){
  64. g->phead = novaPica;
  65. }
  66. else{
  67. struct pica* tekuci = g->phead;
  68. while(tekuci->sledeci != NULL) tekuci = tekuci->sledeci;
  69. tekuci->sledeci = novaPica;
  70. }
  71. }
  72.  
  73. FILE *cita(struct glava *g, char *naziv, char *mode)
  74. {
  75. FILE *k=otvori(naziv,mode);
  76. int cena;
  77. char grad[20];
  78. char drzava[20];
  79. char pizza[20];
  80. struct pica *novii;
  81. while(fscanf(k,"%d %s %s %s\n",&cena, grad, drzava, pizza)!=EOF)
  82. {
  83. novii=noviCvor(cena,grad,drzava,pizza);
  84. dodajNaKraj(g,novii);
  85. }
  86. fclose(k);
  87. }
  88. int suma(char drzava[], char pizza[], struct glava *g)
  89. {
  90. struct pica *p1;
  91. int sum=0;
  92.  
  93. for(p1=g->phead; p1!=NULL; p1=p1->sledeci)
  94. {
  95. if(strcmp(p1->drzava,drzava) == 0 && strcmp(p1->pizza,pizza) == 0)
  96. {
  97. sum+=p1->cena;
  98. printf("suma je %d \n",sum);
  99.  
  100.  
  101. }
  102. }
  103. return sum;
  104. }
  105. FILE *ispisuje(char *naziv, char *mode, struct glava *g, int x)
  106. {
  107. FILE *k=otvori(naziv, mode);
  108. struct pica *p1;
  109. for(p1=g->phead;p1!=NULL; p1=p1->sledeci)
  110. {
  111. fprintf(k, "%d %s %s %s \n",p1->cena, p1->grad, p1->drzava, p1->pizza);
  112. }
  113. fprintf(k,"%d\n",x);
  114. return k;
  115. }
  116. void unisti(struct glava *desc){
  117. struct pica *trenutni;
  118.  
  119. while(desc->phead != NULL){
  120. trenutni= desc->phead;
  121. desc->phead = trenutni->sledeci;
  122.  
  123. trenutni->sledeci=NULL;
  124. free(trenutni);}
  125. }
  126.  
  127. int main(int brArg, char *arg[])
  128. {
  129. struct glava g;
  130. inici(&g);
  131. char *prvi=arg[1];
  132. char *drugi=arg[2];
  133. char *treci=arg[3];
  134. char *cetvrti=arg[4];
  135.  
  136. cita(&g,treci,"r");
  137. int x=suma(prvi,drugi,&g);
  138. printf("%d",x);
  139. FILE *out=ispisuje(cetvrti,"w",&g,x);
  140.  
  141. //frpintf(out,"%d",x);
  142. unisti(&g);
  143. fclose(out);
  144.  
  145. return 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement