Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MODULE zad;
- IMPORT IO;
- IMPORT FIO;
- FROM Str IMPORT Compare;
- TYPE
- skup = SET OF CHAR;
- String = ARRAY [1..80] OF CHAR;
- element = RECORD
- id: CARDINAL;
- ime, autor: String;
- END;
- niz = ARRAY [1..1000] OF element;
- VAR
- n: niz;
- i, maxniz: CARDINAL;
- kljuc: CHAR;
- f: FIO.File;
- PROCEDURE Ispis(a: niz);
- VAR
- i: CARDINAL;
- f2: FIO.File;
- BEGIN
- f2 := FIO.Create("slog-sort.txt");
- FOR i:=1 TO maxniz DO
- FIO.WrCard(f2, a[i].id, 0);
- FIO.WrLn(f2);
- FIO.WrStr(f2, a[i].ime);
- FIO.WrLn(f2);
- FIO.WrStr(f2, a[i].autor);
- FIO.WrLn(f2);
- END;
- IO.WrStr("Sortirani niz je upisan u fajl.");
- IO.WrLn;
- FIO.Close(f2);
- END Ispis;
- PROCEDURE SortSl(VAR a: niz; kljuc: CHAR);
- VAR
- i, j: CARDINAL;
- temp: element;
- BEGIN
- CASE kljuc OF
- 'A': FOR i:=2 TO maxniz DO
- temp := a[i];
- j := i-1;
- WHILE(j>0) AND (temp.id<a[j].id) DO
- a[j+1] := a[j];
- DEC(j);
- END;
- a[j+1] := temp;
- END;|
- 'B': FOR i:=2 TO maxniz DO
- temp := a[i];
- j := i-1;
- WHILE(j>0) AND (Compare(temp.ime, a[j].ime)<0) DO
- a[j+1] := a[j];
- DEC(j);
- END;
- a[j+1] := temp;
- END;|
- 'C': FOR i:=2 TO maxniz DO
- temp := a[i];
- j := i-1;
- WHILE(j>0) AND (Compare(temp.autor, a[j].autor)<0) DO
- a[j+1] := a[j];
- DEC(j);
- END;
- a[j+1] := temp;
- END;|
- END;
- END SortSl;
- BEGIN
- f := FIO.Open("knjige12.txt");
- maxniz := FIO.RdCard(f);
- FOR i:=1 TO maxniz DO
- n[i].id := FIO.RdCard(f);
- FIO.RdStr(f, n[i].ime);
- FIO.RdStr(f, n[i].ime);
- FIO.RdStr(f, n[i].autor);
- END;
- REPEAT
- IO.WrStr("Unesite kljuc po kojem zelite da sortirate elemente:");
- IO.WrLn;
- IO.WrStr("a ----- po id-u");IO.WrLn;
- IO.WrStr("b ----- po imenu");IO.WrLn;
- IO.WrStr("c ----- po autoru");IO.WrLn;
- kljuc := CAP(IO.RdKey());
- UNTIL kljuc IN skup{'A', 'B', 'C'};
- SortSl(n, kljuc);
- Ispis(n);
- FIO.Close(f);
- END zad.
Add Comment
Please, Sign In to add comment