Advertisement
pseudocreator

SPA2 Rad sa Stringovima i Fajlovima

Oct 17th, 2014
564
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //Rad sa Stringovima, poredjenje, unos i visestruki upisi i ispisi iz fajlova;
  2. MODULE StringFajl;
  3. FROM InOut IMPORT WriteString, WriteLn, ReadInt, WriteInt, ReadString;
  4. FROM Str IMPORT Compare, Length;
  5. FROM FIO IMPORT Open, Create, RdStr, WrStr, WrLn, EOF, File, Close;
  6. CONST duzinaStringa = 20;
  7. TYPE
  8.    STRING = ARRAY[1..duzinaStringa] OF CHAR;
  9. VAR
  10.    str1, str2 : STRING;
  11.    veci, int1, k : INTEGER;
  12.    f1, f2 : File;
  13.  
  14. PROCEDURE poredi2(str1, str2: STRING): INTEGER; FORWARD;
  15.  
  16. PROCEDURE unosZabranaPrazan(VAR str1: STRING; t: INTEGER);
  17. VAR
  18.    str2: STRING;
  19.    broj : INTEGER;
  20.    ponovo : BOOLEAN;
  21. BEGIN
  22.      str2 := "";
  23.      ponovo := FALSE;
  24.      REPEAT
  25.            IF (ponovo) THEN
  26.               WriteString("Ponovni unos ");
  27.               WriteInt(t,0);
  28.               WriteString(". stringa u fajl: ");
  29.            ELSE
  30.                WriteString("Unos ");
  31.                WriteInt(t,0);
  32.                WriteString(". stringa u fajl: ");
  33.            END;
  34.            ponovo := TRUE;
  35.            ReadString(str1); WriteLn;
  36.            broj := poredi2(str1,str2);
  37.      UNTIL(broj # 0);
  38. END unosZabranaPrazan;
  39.  
  40. (*poredi leksikografski stra < strb*)
  41. PROCEDURE poredi1(str1, str2 : STRING): INTEGER;
  42. BEGIN
  43.     IF (Compare(str1,str2) = 0) THEN
  44.        RETURN 0
  45.     ELSIF (Compare(str1,str2) > 0) THEN
  46.           RETURN 1
  47.     ELSIF (Compare(str1,str2) < 0) THEN
  48.         RETURN -1
  49.     END;
  50. END poredi1;
  51.  
  52. (*Poredi po duzini stra = strb*)
  53. PROCEDURE poredi2(str1, str2 : STRING): INTEGER;
  54. VAR
  55.    duz1, duz2 : INTEGER;
  56. BEGIN
  57.      duz1 := Length(str1);
  58.      duz2 := Length(str2);
  59.      IF (duz1 = duz2) THEN
  60.        RETURN 0
  61.      ELSIF (duz1 > duz2) THEN
  62.           RETURN 1
  63.      ELSIF (duz1 < duz2) THEN
  64.           RETURN -1
  65.      END;
  66. END poredi2;
  67.  
  68. (*Odabir poredjenja (poredi1 V poredi2)*)
  69. PROCEDURE poredi0(str1,str2 : STRING; broj: INTEGER): INTEGER;
  70. BEGIN
  71.      IF broj = 1 THEN
  72.        RETURN poredi1(str1,str2)
  73.      ELSE
  74.          RETURN poredi2(str1,str2)
  75.      END
  76. END poredi0;
  77.  
  78. PROCEDURE ispis(broj: INTEGER);
  79. BEGIN
  80.      IF (broj = 0) THEN
  81.        WriteString(str1); WriteString(" je jednak sa ");
  82.        WriteString(str2);
  83.        WriteLn
  84.      ELSIF (broj > 0) THEN
  85.        WriteString(str1); WriteString(" je veci od ");
  86.        WriteString(str2);
  87.        WriteLn
  88.      ELSE
  89.        WriteString(str1); WriteString(" je manji od");
  90.        WriteString(str2);
  91.        WriteLn
  92.      END
  93. END ispis;
  94.  
  95. PROCEDURE kojePoredjenje(VAR br: INTEGER);
  96. BEGIN
  97.      WriteString("Da li zelite poredjenje 1 ili 2: ");
  98.      ReadInt(br); WriteLn;
  99. END kojePoredjenje;
  100.  
  101. PROCEDURE upisFajlBezPraznog(VAR f: File; VAR n: INTEGER);
  102. VAR
  103.    str : STRING;
  104.    i : INTEGER;
  105. BEGIN
  106.      WriteString("Unesite broj redova: ");
  107.      ReadInt(n); WriteLn;
  108.      FOR i := 1 TO n DO
  109.          unosZabranaPrazan(str, i);
  110.          WrStr(f,str);
  111.          WrLn(f);
  112.          WriteLn;
  113.          WriteLn
  114.      END
  115. END upisFajlBezPraznog;
  116.  
  117. PROCEDURE citajFajl1(f: File; n : INTEGER);
  118. VAR
  119.    str : STRING;
  120.    i : INTEGER;
  121. BEGIN
  122.      WriteString("Ispis iz fajla "); WriteLn;
  123.      EOF := FALSE;
  124.      FOR i := 1 TO n DO
  125.           RdStr(f,str);
  126.           WriteString("String u ");
  127.           WriteInt(i,0);
  128.           WriteString(". redu iz fajla je: ");
  129.           WriteString(str);
  130.           WriteLn
  131.      END
  132. END citajFajl1;
  133.  
  134. PROCEDURE citajFajl2(f: File;k: INTEGER);
  135. VAR
  136.    str1, str2 : STRING;
  137.    i, broj : INTEGER;
  138. BEGIN
  139.      WriteString("Ispis iz fajla "); WriteLn;
  140.      EOF := FALSE;
  141.      str2 := "";
  142.      i := 0;
  143.  
  144.      WHILE (NOT EOF) DO
  145.           RdStr(f,str1);
  146.           INC(i);
  147.           broj := poredi2(str1, str2);
  148.           IF ((broj # 0) AND (i # (k+1))) THEN
  149.              WriteString("String u ");
  150.              WriteInt(i,0);
  151.              WriteString(". redu iz fajla je: ");
  152.              WriteString(str1);
  153.              WriteLn
  154.          END
  155.      END
  156. END citajFajl2;
  157.  
  158. BEGIN
  159.      f1 := Create("fajlZaModulu7.txt");
  160.      upisFajlBezPraznog(f1,k);
  161.      Close(f1);
  162.      f2 := Open("fajlZaModulu7.txt");
  163.      citajFajl1(f2,k);
  164.      Close(f2);
  165.      (*Ubaciti zeljene procedure*)
  166. END stringFajl.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement