Advertisement
Guest User

jelka

a guest
Nov 28th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.90 KB | None | 0 0
  1. MODULE zad4;
  2. FROM FIO IMPORT File,Open,Close, Exists, RdCard;
  3. FROM InOut IMPORT WriteString, WriteLn, ReadString, WriteCard;
  4. FROM Str IMPORT Length;
  5.  
  6. CONST
  7. MaxSijalica=50;
  8. MaxPovrsina=100;
  9.  
  10. TYPE
  11. niz=ARRAY[0..MaxSijalica] OF CARDINAL;
  12. mat=ARRAY[0..MaxSijalica],[0..MaxPovrsina] OF CARDINAL;
  13. string=ARRAY[1..80] OF CHAR;
  14.  
  15. VAR
  16. ime:string;
  17. ok:BOOLEAN;
  18. broj,povrs,potrosnja, red:niz;
  19. BrSijalica,Povrsina,UkBroj,UkPovrs:CARDINAL;
  20.  
  21. PROCEDURE jelka(broj,povrs,potrosnja:niz; BrSijalica,Povrsina:CARDINAL; VAR red:niz; VAR UkBroj, UkPovrs:CARDINAL; VAR ok:BOOLEAN);
  22. VAR
  23. J,R,novibroj:CARDINAL;
  24. matrica:mat;
  25. BEGIN
  26. IF (BrSijalica>0) AND (BrSijalica<=MaxSijalica) AND (Povrsina>0) AND (Povrsina<=MaxPovrsina) THEN
  27. ok:=TRUE;
  28.  
  29. FOR J:=1 TO BrSijalica DO
  30. IF (broj[J]<=0) OR (povrs[J]<=0) OR (potrosnja[J]<=0) THEN
  31. ok:=FALSE;
  32. END;
  33. END;
  34. ELSE
  35. ok:=FALSE;
  36. END;
  37.  
  38. IF ok THEN
  39. FOR J:=0 TO BrSijalica DO
  40. matrica[J,0]:=0;
  41. END;
  42. FOR R:=1 TO Povrsina DO
  43. matrica[0,R]:=0;
  44. END;
  45.  
  46. FOR J:=1 TO BrSijalica DO
  47. FOR R:=1 TO Povrsina DO
  48. matrica[J,R]:=matrica[J-1,R];
  49.  
  50. IF R>=povrs[J] THEN
  51. novibroj:=matrica[J-1, R-povrs[J]]+broj[J];
  52.  
  53. IF novibroj>matrica[J,R] THEN
  54. matrica[J,R]:=novibroj;
  55. END;
  56. END;
  57. END;
  58. END;
  59.  
  60. UkPovrs:=0;
  61. R:=Povrsina;
  62.  
  63. FOR J:=BrSijalica TO 1 BY -1 DO
  64. IF matrica[J,R]<>matrica[J-1,R] THEN
  65. red[J]:=1;
  66. UkPovrs:=UkPovrs+povrs[J];
  67. R:=R-povrs[J];
  68. ELSE
  69. red[J]:=0;
  70. END;
  71. END;
  72. UkBroj:=matrica[BrSijalica, Povrsina];
  73. END;
  74. END jelka;
  75.  
  76. PROCEDURE Ucitaj(ime:string; VAR BrSijalica, Povrsina: CARDINAL; VAR broj,povrs, potrosnja: niz):BOOLEAN;
  77. VAR
  78. f:File;
  79. i:CARDINAL;
  80. BEGIN
  81. IF Exists(ime) THEN
  82. f:=Open(ime);
  83. BrSijalica:=RdCard(f);
  84. Povrsina:=RdCard(f);
  85.  
  86. FOR i:=1 TO BrSijalica DO
  87. broj[i]:=RdCard(f);
  88. povrs[i]:=RdCard(f);
  89. potrosnja[i]:=RdCard(f);
  90. END;
  91. Close(f);
  92. RETURN TRUE;
  93. ELSE
  94. RETURN FALSE;
  95. END;
  96. END Ucitaj;
  97.  
  98. PROCEDURE IspisiRedosled(red:niz; BrSijalica:CARDINAL);
  99. VAR
  100. i:CARDINAL;
  101. BEGIN
  102. WriteString("Redosled je: ");
  103. WriteLn;
  104.  
  105. FOR i:=1 TO BrSijalica DO
  106. IF red[i]=1 THEN
  107. WriteCard(i,2);
  108. IF (i<>BrSijalica) THEN
  109. WriteString(",");
  110. END;
  111. END;
  112. END;
  113. END IspisiRedosled;
  114.  
  115. BEGIN
  116. WriteString("Unesite fajl:");
  117. WriteLn;
  118. ReadString(ime);
  119.  
  120. IF Length(ime)=0 THEN
  121. ime:='fajl1.txt';
  122. END;
  123.  
  124. IF Ucitaj(ime, BrSijalica, Povrsina, broj,povrs,potrosnja) THEN
  125. UkPovrs:=0;
  126. UkBroj:=0;
  127.  
  128. jelka(broj,povrs,potrosnja,BrSijalica,Povrsina, red,UkBroj,UkPovrs, ok);
  129.  
  130. IF ok THEN
  131. IspisiRedosled(red,BrSijalica);
  132. WriteLn;
  133. WriteString("UkBroj: ");
  134. WriteCard(UkBroj,3);
  135. WriteLn;
  136. WriteString("UkPovrs: ");
  137. WriteCard(UkPovrs,3);
  138. WriteLn;
  139. ELSE
  140. WriteString("greska!");
  141. END;
  142. ELSE
  143. WriteString("Greska u ucitavanju!");
  144. END;
  145. END zad4.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement