Advertisement
ridjis

vježbe stek/red

Jun 4th, 2014
563
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // zadatak sa vježbi red/stek
  2. MODULE zadatakV;
  3.  
  4. IMPORT Stek;
  5. IMPORT RedOpsl;
  6. FROM InOut IMPORT WriteLn,WriteString,ReadString,WriteCard;
  7. FROM FIO IMPORT File,Open,Create,Close,EOF,RdCard,WrCard,WrLn;
  8. FROM Stek IMPORT StekTip,Top,Pop,Push;
  9. FROM RedOpsl IMPORT RedOpslTip, PopFirst,AddRear,First;
  10.  
  11. CONST f1 = "f1.txt";
  12.       f2 = "f2.txt";
  13.  
  14. VAR
  15.     str : ARRAY [1..256] OF CHAR;
  16.     s1,s2,s3 : StekTip;
  17.     red : RedOpslTip;
  18.     ok : BOOLEAN;
  19.    
  20. PROCEDURE Ucitaj(imeF:ARRAY OF CHAR; VAR red:RedOpslTip;VAR ok:BOOLEAN);
  21. VAR f:File;
  22.     n:CARDINAL;
  23. BEGIN
  24.   RedOpsl.MakeNull(red);
  25.   f:=Open(imeF);
  26.   EOF:=FALSE;
  27.   WHILE NOT EOF DO
  28.     n:=RdCard(f);
  29.     AddRear(red,n,ok);
  30.   END;
  31.   Close(f);
  32. END Ucitaj;
  33.  
  34. PROCEDURE Manje5(VAR red:RedOpslTip;VAR ok:BOOLEAN);
  35. VAR m:BOOLEAN;
  36.     n:CARDINAL;
  37. BEGIN
  38.   m:=TRUE;
  39.   WHILE m AND NOT RedOpsl.Empty(red) DO
  40.     First(red,n,ok);
  41.     IF n < 5 THEN
  42.       PopFirst(red,ok);
  43.     ELSE
  44.       m:=FALSE;
  45.     END;
  46.   END;
  47. END Manje5;
  48.  
  49. (* PROCEDURE IspisiRed(VAR red:RedOpslTip; VAR ok:BOOLEAN);
  50. VAR n:CARDINAL;
  51. BEGIN
  52.   WHILE NOT RedOpsl.Empty(red) DO
  53.     First(red,n,ok);
  54.     WriteCard(n,1);
  55.     WriteLn;
  56.     PopFirst(red,ok);
  57.   END;
  58. END IspisiRed;        *)
  59.  
  60. PROCEDURE Sacuvaj(imeF:ARRAY OF CHAR; VAR red:RedOpslTip;VAR ok:BOOLEAN);
  61. VAR n:CARDINAL;
  62.     f:File;
  63. BEGIN
  64.   f:=Create(imeF);
  65.   WHILE NOT RedOpsl.Empty(red) DO
  66.     First(red,n,ok);
  67.     WrCard(f,n,1);
  68.     PopFirst(red,ok);
  69.     WrLn(f);
  70.   END;
  71.   Close(f);
  72. END Sacuvaj;
  73.  
  74. PROCEDURE UcitajFajlUStek(imeF:ARRAY OF CHAR;VAR stek:StekTip;VAR ok:BOOLEAN);
  75. VAR f:File;
  76.     n:CARDINAL;
  77. BEGIN
  78.   f:=Open(imeF);
  79.   EOF:=FALSE;
  80.   WHILE NOT EOF DO
  81.     n:=RdCard(f);
  82.     Push(stek,n,ok);
  83.   END;
  84.   Close(f);
  85. END UcitajFajlUStek;
  86.  
  87. PROCEDURE UkloniJednocifrene(VAR stek:StekTip;VAR ok:BOOLEAN);
  88. VAR m:BOOLEAN;
  89.     n:CARDINAL;
  90. BEGIN
  91.   m:=TRUE;
  92.   WHILE m AND NOT Stek.Empty(stek) DO
  93.     Top(stek,n,ok);
  94.     IF n<10 THEN
  95.       Pop(stek,ok);
  96.     ELSE
  97.       m:=FALSE;
  98.     END;
  99.   END;
  100. END UkloniJednocifrene;
  101.  
  102. PROCEDURE UkloniNeparne(VAR stek:StekTip;VAR ok:BOOLEAN);
  103. VAR m:BOOLEAN;
  104.     n:CARDINAL;
  105. BEGIN
  106.   m:=TRUE;
  107.   WHILE m AND NOT Stek.Empty(stek) DO
  108.     Top(stek,n,ok);
  109.     IF ODD(n) THEN
  110.       Pop(stek,ok);
  111.     ELSE
  112.       m:=FALSE;
  113.     END;
  114.   END;
  115. END UkloniNeparne;
  116.  
  117. PROCEDURE UbaciNaizmenicno(VAR s1,s2,s3:StekTip;VAR ok:BOOLEAN);
  118. VAR n,m:CARDINAL;
  119. BEGIN
  120.   Stek.MakeNull(s3);
  121.   WHILE NOT Stek.Empty(s1) OR NOT Stek.Empty(s2) DO
  122.     IF NOT Stek.Empty(s1) THEN
  123.       Top(s1,n,ok);
  124.       Push(s3,n,ok);
  125.       Pop(s1,ok);
  126.     END;
  127.     IF NOT Stek.Empty(s2) THEN
  128.       Top(s2,m,ok);
  129.       Push(s3,m,ok);
  130.       Pop(s2,ok);
  131.     END;
  132.   END;
  133. END UbaciNaizmenicno;
  134.  
  135. (* PROCEDURE IspisiStek(stek:StekTip;VAR ok:BOOLEAN);
  136. VAR n:CARDINAL;
  137. BEGIN
  138.   WHILE NOT Stek.Empty(stek) DO
  139.     Top(stek,n,ok);
  140.     WriteCard(n,1);
  141.     WriteLn;
  142.     Pop(stek,ok);
  143.   END;
  144. END IspisiStek;   *)
  145.  
  146. PROCEDURE SacuvajStek(imeF:ARRAY OF CHAR; VAR stek:StekTip;VAR ok:BOOLEAN);
  147. VAR n:CARDINAL;
  148.     f:File;
  149. BEGIN
  150.   f:=Create(imeF);
  151.   WHILE NOT Stek.Empty(stek) DO
  152.     Top(stek,n,ok);
  153.     WrCard(f,n,1);
  154.     WrLn(f);
  155.     Pop(stek,ok);
  156.   END;
  157. END SacuvajStek;
  158.  
  159. BEGIN
  160.   Ucitaj(f1,red,ok);
  161.   Manje5(red,ok);
  162.  
  163.   WriteString('Unesite ime fajla: ');
  164.   ReadString(str);
  165.   Sacuvaj(str,red,ok);
  166.  
  167.   UcitajFajlUStek(f1,s1,ok);
  168.   UcitajFajlUStek(f2,s2,ok);
  169.  
  170.   UkloniJednocifrene(s1,ok);
  171.   UkloniNeparne(s2,ok);
  172.  
  173.   UbaciNaizmenicno(s1,s2,s3,ok);
  174.  
  175.   WriteString('Unesite ime fajla: ');
  176.   ReadString(str);
  177.   SacuvajStek(str,s3,ok);
  178.  
  179. END zadatakV.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement