Advertisement
Guest User

Untitled

a guest
Aug 25th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.08 KB | None | 0 0
  1. #ifdef _MSC_VER
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #endif
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <math.h>
  7.  
  8.  
  9. typedef struct stan{
  10. int id;
  11. float cena;
  12. float sirina;
  13. float duzina;
  14.  
  15. }Stan;
  16. typedef struct Elem {
  17. Stan stan;
  18. struct Elem* sledeci;
  19. }Elem;
  20.  
  21. Elem* ucitaj ( const char* ime_datoteke) {
  22. Elem* glava = NULL, * poslednji = NULL, *novi;
  23.  
  24. FILE* ulaz = fopen(ime_datoteke, "r");
  25. if (!ulaz) exit(1);
  26. Stan stan;
  27. while (fscanf(ulaz, "%d %f %f %f", &stan.id, &stan.cena, &stan.sirina, &stan.duzina) == 4) {
  28. novi = (Elem*)malloc(sizeof(Elem));
  29. if (!novi) exit(1);
  30. novi->stan = stan;
  31. novi->sledeci = NULL;
  32. if (!glava) glava = novi;
  33. else poslednji->sledeci = novi;
  34. poslednji = novi;
  35. }
  36. fclose(ulaz);
  37.  
  38. return glava;
  39. }
  40. void sortiraj(Elem* glava) {
  41. Elem* pom1, * pom2;
  42. Stan pom;
  43. for (pom1 = glava; pom1 != NULL; pom1 = pom1->sledeci) {
  44. for (pom2 = pom1->sledeci; pom2 != NULL; pom2 = pom2->sledeci) {
  45. if (uporedi(pom1->stan, pom2->stan) <= 0) {
  46. continue;
  47. }else{
  48. pom= pom1->stan;
  49. pom1->stan = pom2->stan;
  50. pom2->stan = pom;
  51. }
  52. }
  53. }
  54. }
  55. int uporedi(Stan stan1, Stan stan2) {
  56.  
  57. if (stan1.cena == stan2.cena) {
  58. return 0;
  59. }
  60. else if (stan1.cena < stan2.cena) {
  61. return -1;
  62. }
  63. else if (stan1.cena > stan2.cena) {
  64. return 1;
  65. }
  66. }
  67. void ispis(Elem* glava, float radius, const char* ime_datoteke) {
  68. Elem* curr;
  69. float rastojanje;
  70. FILE* izlaz = fopen(ime_datoteke, "w");
  71. if (!izlaz) exit(1);
  72. for (curr = glava; curr != NULL; curr = curr->sledeci) {
  73. rastojanje = sqrt(pow(2, curr->stan.duzina) + pow(2, curr->stan.sirina));
  74. if (rastojanje < radius) fprintf(izlaz, "%d %f %f %f \n", curr->stan.id, curr->stan.cena, curr->stan.sirina, curr->stan.duzina);
  75. }
  76. fclose(izlaz);
  77. }
  78.  
  79. void deallocate(Elem* glava) {
  80. Elem* pom;
  81. while (glava) {
  82. pom = glava;
  83. free(pom);
  84. glava = glava->sledeci;
  85. }
  86. }
  87.  
  88. int main() {
  89. float radius;
  90. Elem* glava = ucitaj("stanovi.txt");
  91. sortiraj(glava);
  92. scanf_s("%f", &radius);
  93.  
  94. ispis(glava, radius, "stanovi_filtrirano.txt");
  95. deallocate(glava);
  96. return 0;
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement