etf2018

Z5Z3

Sep 1st, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. struct Oblik {
  5. char naziv[20];
  6. int br_stranica;
  7. double stranice[300];
  8. };
  9. void dodaj_oblik(struct Oblik novioblik) {
  10. unsigned short brojoblika;
  11. unsigned char brojstranica;
  12. struct Oblik oblici[100];
  13. int i, j;
  14. float stranica;
  15. FILE* dat=fopen("oblici.dat", "rb");
  16. if (dat==NULL) {
  17. printf("Greska");
  18. exit(1);
  19. }
  20.  
  21. // Algoritam za citanje podataka iz ove binarne datoteke u niz struktura, koji ce se ponavljati vise puta kroz program
  22. fread(&brojoblika, 2, 1, dat);
  23. for (i=0;i<brojoblika;i++) {
  24. fread(oblici[i].naziv, 1, 20, dat);
  25. fread(&brojstranica, 1, 1, dat);
  26. oblici[i].br_stranica=(int)brojstranica;
  27. for (j=0;j<brojstranica;j++) {
  28. fread(&stranica, 4, 1, dat);
  29. oblici[i].stranice[j]=(double)stranica;
  30. }
  31. }
  32. oblici[i]=novioblik;
  33. brojoblika++; // Jednostavno dodavanje oblika na kraj niza struktura;
  34.  
  35. FILE* dat2=fopen("oblici.dat", "wb");
  36. if (dat2==NULL) {
  37. printf("Greska");
  38. exit(1);
  39. }
  40. // Algoritam za zapisivanje niza struktura nazad u binarnu datoteku
  41. fwrite(&brojoblika, 2, 1, dat2);
  42. for (i=0;i<brojoblika;i++) {
  43. fwrite(oblici[i].naziv, 1, 20, dat2);
  44. brojstranica=(unsigned char)oblici[i].br_stranica;
  45. fwrite(&brojstranica, 1, 1, dat2);
  46. for (j=0;j<brojstranica;j++) {
  47. stranica=(float)oblici[i].stranice[j];
  48. fwrite(&stranica, 4, 1, dat2);
  49. }
  50. }
  51. fclose(dat);
  52. fclose(dat2);
  53. }
  54. void izbaci_duple() {
  55. int i, j, k;
  56. unsigned short brojoblika;
  57. unsigned char brojstranica;
  58. float stranica;
  59. struct Oblik oblici[100];
  60. FILE* dat=fopen("oblici.dat", "rb");
  61. if (dat==NULL) {
  62. printf("Greska");
  63. exit(1);
  64. }
  65. // Algoritam za citanje
  66. fread(&brojoblika, 2, 1, dat);
  67. for (i=0;i<brojoblika;i++) {
  68. fread(oblici[i].naziv, 1, 20, dat);
  69. fread(&brojstranica, 1, 1, dat);
  70. oblici[i].br_stranica=(int)brojstranica;
  71. for (j=0;j<brojstranica;j++) {
  72. fread(&stranica, 4, 1, dat);
  73. oblici[i].stranice[j]=(double)stranica;
  74. }
  75. }
  76. // Ako strcmp vrati 0, tj. ako su stringovi jednaki, izbacuje drugog koji je pronadjen
  77. for (i=0;i<brojoblika;i++) {
  78. for (j=i+1;j<brojoblika;j++) {
  79. if (!strcmp(oblici[i].naziv, oblici[j].naziv)) {
  80. for(k=j;k<brojoblika-1;k++) {
  81. oblici[k]=oblici[k+1];
  82. }
  83. brojoblika--;
  84. j--;
  85. }
  86. }
  87. }
  88.  
  89. FILE* dat2=fopen("oblici.dat","wb");
  90. if (dat2==NULL) {
  91. printf("Greska");
  92. exit(1);
  93. }
  94. // Algoritam za zapisivanje
  95. fwrite(&brojoblika, 2, 1, dat2);
  96. for (i=0;i<brojoblika;i++) {
  97. fwrite(oblici[i].naziv, 1, 20, dat2);
  98. brojstranica=(unsigned char)oblici[i].br_stranica;
  99. fwrite(&brojstranica, 1, 1, dat2);
  100. for (j=0;j<brojstranica;j++) {
  101. stranica=(float)oblici[i].stranice[j];
  102. fwrite(&stranica, 4, 1, dat2);
  103. }
  104. }
  105. fclose(dat);
  106. fclose(dat2);
  107. }
  108. struct Oblik daj_najveci() {
  109. int i, j, brojoblika=0;
  110. float maxobim=0, obimoblika=0, stranica;
  111. struct Oblik maxoblik;
  112. struct Oblik oblici[100];
  113. unsigned char brojstranica;
  114.  
  115. FILE* dat=fopen("oblici.dat","rb");
  116. if (dat==NULL) {
  117. printf("Greska");
  118. exit(1);
  119. }
  120. // Algoritam za citanje i pronalazanje strukture sa najvecim obimom
  121. fread(&brojoblika, 2, 1, dat);
  122. for (i=0;i<brojoblika;i++) {
  123. obimoblika=0;
  124. fread(oblici[i].naziv, 1, 20, dat);
  125. fread(&brojstranica, 1, 1, dat);
  126. oblici[i].br_stranica=(int)brojstranica;
  127. for (j=0;j<brojstranica;j++) {
  128. fread(&stranica, 4, 1, dat);
  129. oblici[i].stranice[j]=(double)stranica;
  130. obimoblika+=oblici[i].stranice[j];
  131. }
  132. if (obimoblika>maxobim) {
  133. maxobim=obimoblika;
  134. maxoblik=oblici[i];
  135. }
  136. }
  137. fclose(dat);
  138. return maxoblik;
  139. }
  140. int main() {
  141. int ucitano, i, j;
  142. unsigned short brojoblika;
  143. unsigned char brojstranica;
  144. float stranica;
  145. struct Oblik oblici[100];
  146. FILE* dat=fopen("oblici.dat", "rb");
  147. if (dat == NULL) {
  148. printf("Greska pri otvaranju datoteke");
  149. return 0;
  150. }
  151. i=0;
  152. /*do {
  153. ucitano=fread(&brojoblika, 2, 1, dat);
  154. fread(oblici[i].naziv, 1, 20, dat);
  155. fread(&brojstranica, 1, 1, dat);
  156. oblici[i].br_stranica=(int)brojstranica;
  157. for (j=0;j<oblici[i].br_stranica;j++) {
  158. fread(&stranica, 4, 1, dat);
  159. oblici[i].stranice[j]=(double)stranica;
  160. }
  161. i++;
  162. } while(ucitano);
  163. */
  164. printf("Uspjesno ucitani");
  165. fclose(dat);
  166. return 0;
  167. }
Add Comment
Please, Sign In to add comment