Guest User

Untitled

a guest
Apr 8th, 2018
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE zad;
  2. IMPORT IO;
  3. IMPORT FIO;
  4. FROM Str IMPORT Compare;
  5. TYPE
  6.     skup = SET OF CHAR;
  7.     String = ARRAY [1..80] OF CHAR;
  8.     element = RECORD
  9.                 id: CARDINAL;
  10.                 ime, autor: String;
  11.               END;
  12.     niz = ARRAY [1..1000] OF element;
  13. VAR
  14.     n: niz;
  15.     i, maxniz: CARDINAL;
  16.     kljuc: CHAR;
  17.     f: FIO.File;
  18.  
  19. PROCEDURE Ispis(a: niz);
  20. VAR
  21.     i: CARDINAL;
  22.     f2: FIO.File;
  23. BEGIN
  24.     f2 := FIO.Create("slog-sort.txt");
  25.     FOR i:=1 TO maxniz DO
  26.         FIO.WrCard(f2, a[i].id, 0);
  27.         FIO.WrLn(f2);
  28.         FIO.WrStr(f2, a[i].ime);
  29.         FIO.WrLn(f2);
  30.         FIO.WrStr(f2, a[i].autor);
  31.         FIO.WrLn(f2);
  32.     END;
  33.     IO.WrStr("Sortirani niz je upisan u fajl.");
  34.     IO.WrLn;
  35.     FIO.Close(f2);
  36. END Ispis;
  37.  
  38. PROCEDURE SortSl(VAR a: niz; kljuc: CHAR);
  39. VAR
  40.     i, j: CARDINAL;
  41.     temp: element;
  42. BEGIN
  43.     CASE kljuc OF
  44.         'A':    FOR i:=2 TO maxniz DO
  45.                     temp := a[i];
  46.                     j := i-1;
  47.                     WHILE(j>0) AND (temp.id<a[j].id) DO
  48.                         a[j+1] := a[j];
  49.                         DEC(j);
  50.                     END;
  51.                     a[j+1] := temp;
  52.                 END;|
  53.         'B':    FOR i:=2 TO maxniz DO
  54.                     temp := a[i];
  55.                     j := i-1;
  56.                     WHILE(j>0) AND (Compare(temp.ime, a[j].ime)<0) DO
  57.                         a[j+1] := a[j];
  58.                         DEC(j);
  59.                     END;
  60.                     a[j+1] := temp;
  61.                 END;|
  62.         'C':    FOR i:=2 TO maxniz DO
  63.                     temp := a[i];
  64.                     j := i-1;
  65.                     WHILE(j>0) AND (Compare(temp.autor, a[j].autor)<0) DO
  66.                         a[j+1] := a[j];
  67.                         DEC(j);
  68.                     END;
  69.                     a[j+1] := temp;
  70.                 END;|
  71.     END;
  72.        
  73. END SortSl;
  74.  
  75. BEGIN
  76.     f := FIO.Open("knjige12.txt");
  77.     maxniz := FIO.RdCard(f);
  78.     FOR i:=1 TO maxniz DO
  79.         n[i].id := FIO.RdCard(f);
  80.         FIO.RdStr(f, n[i].ime);
  81.         FIO.RdStr(f, n[i].ime);
  82.         FIO.RdStr(f, n[i].autor);
  83.     END;
  84.     REPEAT
  85.         IO.WrStr("Unesite kljuc po kojem zelite da sortirate elemente:");
  86.         IO.WrLn;
  87.         IO.WrStr("a ----- po id-u");IO.WrLn;
  88.         IO.WrStr("b ----- po imenu");IO.WrLn;
  89.         IO.WrStr("c ----- po autoru");IO.WrLn;
  90.         kljuc := CAP(IO.RdKey());
  91.     UNTIL kljuc IN skup{'A', 'B', 'C'};
  92.     SortSl(n, kljuc);
  93.     Ispis(n);
  94.     FIO.Close(f);
  95. END zad.
Add Comment
Please, Sign In to add comment