Advertisement
vegeta322

Meso

Dec 23rd, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.35 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct meso {
  6. double cena;
  7. char grad[2 + 1];
  8. char meso[30 + 1];
  9. struct meso *sledeci;
  10. }Meso;
  11.  
  12. FILE *safeopen(FILE *fajl, char *mdoe, int error_code);
  13. Meso *ucitaj(FILE *fajl, Meso *m);
  14. void pisi(Meso *m);
  15. Meso *jeftino(Meso *m, char *vrsta);
  16. void brisi(Meso *m);
  17.  
  18. int main(int argc, char *args[])
  19. {
  20. Meso *glava = NULL, *naj;
  21. FILE *ulaz = safeopen(args[1],"r",1);
  22. glava = ucitaj(ulaz,glava);
  23. fclose(ulaz);
  24. pisi(glava);
  25.  
  26. char *vrsta = args[2];
  27.  
  28. naj = jeftino(glava, vrsta);
  29. printf("\nNajpovoljnije je: %s\n",vrsta);
  30.  
  31. brisi(glava);
  32. //glava = NULL;
  33. pisi(glava);
  34.  
  35. char *slovo = args[3];
  36. char k[] = "klasa_";
  37. char ekst[] = ".txt";
  38. strcat(k,slovo);
  39. strcat(k,ekst);
  40. printf("%s\n",k);
  41. FILE *klasa = safeopen(k,"w",33);
  42. fclose(klasa);
  43.  
  44. return 0;
  45. }
  46.  
  47. FILE *safeopen(FILE *fajl, char *mode, int error_code) {
  48. FILE *fp = fopen(fajl,mode);
  49. if(fp == NULL) {
  50. printf("Greska kod ucitavanja '%s'",fajl);
  51. exit(error_code);
  52. }
  53. return fp;
  54. }
  55. /////////////////////////////////////////////////////////////////////
  56. Meso *ucitaj(FILE *fajl, Meso *m) {
  57. double tcena;
  58. char tgrad[2 + 1], tmeso[30 + 1];
  59. while(fscanf(fajl,"%lf %s %s",&tcena, tgrad, tmeso) == 3) {
  60. Meso *novi = malloc(sizeof(Meso));
  61. novi->cena = tcena;
  62. strcpy(novi->grad, tgrad);
  63. strcpy(novi->meso, tmeso);
  64. novi->sledeci = m;
  65. m = novi;
  66. }
  67. return m;
  68. }
  69.  
  70. void pisi(Meso *m) {
  71. /*if(m == NULL) {
  72. printf("Lista je prazna...\n");
  73. return;
  74. }*/
  75. while(m) {
  76. printf("%6.2lf %s %s\n",m->cena, m->grad, m->meso);
  77. m = m->sledeci;
  78. }
  79. }
  80.  
  81. Meso *jeftino(Meso *m, char *vrsta) {
  82. Meso *n = NULL;
  83. if(m == NULL) {
  84. printf("Lista je prazna...\n");
  85. return;
  86. }
  87. while(m) {
  88. if(strcmp(m->meso, vrsta) == 0) {
  89. if(n == NULL)
  90. n = m;
  91. else if(m->cena < n->cena)
  92. n = m;
  93. }
  94. m = m->sledeci;
  95. }
  96. return n;
  97. }
  98.  
  99. void brisi(Meso *m) {
  100. Meso *stari;
  101. while(m) {
  102. stari = m;
  103. m = m->sledeci;
  104. free(stari);
  105. }
  106. printf("Lista je obrisana...\n");
  107. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement