Guest User

Untitled

a guest
Apr 8th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. MODULE bla;
  2.  
  3. FROM InOut IMPORT WriteString, WriteLn, WriteCard, ReadCard;
  4. FROM FIO IMPORT File, Exists, Open, Close, Create, RdCard, WrCard, WrStr, RdStr, WrLn, RdItem, EOF;
  5. FROM Str IMPORT Compare;
  6.  
  7.  
  8. TYPE
  9.  
  10.     string = ARRAY [1..100] OF CHAR;
  11.    
  12.     element = RECORD
  13.             br : CARDINAL;
  14.             imePisca : string;
  15.             imeKnjige : string;
  16.           END;
  17.        
  18.     tniz = ARRAY [0..1000] OF element;
  19.    
  20.  
  21. VAR
  22.     niz : tniz;
  23.     n : CARDINAL;
  24.    
  25.  
  26. PROCEDURE ucitaj( ime : string; VAR niz : tniz; VAR n : CARDINAL ) : BOOLEAN;
  27. VAR
  28.     ulaz : File;
  29.     rez : BOOLEAN;
  30.     i : CARDINAL;
  31. BEGIN
  32.     rez := FALSE;
  33.     IF Exists( ime ) THEN
  34.        
  35.         ulaz := Open( ime );
  36.        
  37.         n := RdCard( ulaz );
  38.         i := 1;
  39.         EOF := FALSE;
  40.        
  41.         WHILE (i <= n) AND ( NOT EOF ) DO
  42.             niz[i].br := RdCard(ulaz);
  43.             RdItem( ulaz , niz[i].imePisca );
  44.             RdItem( ulaz , niz[i].imeKnjige );
  45.            
  46.             INC( i );
  47.         END;
  48.        
  49.         IF (i - 1) = n THEN rez := TRUE; END;
  50.        
  51.         Close( ulaz );
  52.     END;
  53.    
  54.     RETURN rez;
  55.  
  56. END ucitaj;
  57.  
  58.  
  59.  
  60.  
  61. PROCEDURE snimi( ime : string; VAR niz : tniz; VAR n : CARDINAL );
  62. VAR
  63.     izlaz : File;
  64.     i : CARDINAL;
  65. BEGIN
  66.         izlaz := Create( ime );
  67.    
  68.     WrCard( izlaz, n, 0 ); WrLn(izlaz );
  69.    
  70.     FOR i := 1 TO n DO
  71.         WrCard( izlaz, niz[i].br, 0); WrLn( izlaz );
  72.         WrStr( izlaz, niz[i].imePisca ); WrLn( izlaz );
  73.         WrStr( izlaz, niz[i].imeKnjige ); WrLn( izlaz );
  74.     END;
  75.    
  76.     Close( izlaz );
  77. END snimi;
  78.  
  79.  
  80.  
  81.  
  82. PROCEDURE sortiraj( VAR niz : tniz; n : CARDINAL; polje : CARDINAL );
  83.  
  84.  
  85.     PROCEDURE comp( i, j : CARDINAL ) : BOOLEAN;
  86.     BEGIN
  87.         IF polje = 1 THEN
  88.             RETURN niz[i].br > niz[j].br;
  89.         ELSIF polje = 2 THEN
  90.             RETURN Compare( niz[i].imeKnjige, niz[j].imeKnjige ) > 0;
  91.         ELSIF polje = 3 THEN
  92.                 RETURN Compare( niz[i].imePisca, niz[j].imePisca ) > 0;
  93.         END;   
  94.     END comp;
  95.    
  96. VAR
  97.     i, j, min : CARDINAL;
  98.     temp : element;
  99. BEGIN
  100.  
  101.     FOR i := 1 TO n - 1 DO
  102.         temp := niz[i];
  103.         min := i;
  104.        
  105.         FOR j := i + 1 TO n DO
  106.             IF comp( min, j ) THEN
  107.                 min := j;
  108.                 temp := niz[min];
  109.             END;
  110.         END;
  111.        
  112.         IF i # min THEN
  113.             niz[min] := niz[i];
  114.             niz[i] := temp;
  115.         END;
  116.     END;
  117.    
  118.  
  119. END sortiraj;
  120.  
  121.  
  122.  
  123. VAR
  124.     polje : CARDINAL;
  125.  
  126. BEGIN
  127.  
  128.     IF ucitaj( "knjige12.txt" , niz, n ) THEN
  129.    
  130.         WriteString("--- sortiraj po( unesi broj od 1 do 3 )---"); WriteLn;
  131.         ReadCard( polje ); WriteLn;
  132.        
  133.         IF ( polje >= 1 ) AND ( polje <= 3 ) THEN
  134.             sortiraj( niz, n, polje );
  135.             snimi( "sortirano.txt", niz, n );
  136.            
  137.             WriteString("---sortirano i snimljeno---"); WriteLn;
  138.         ELSE
  139.             WriteString("---sortiranje nije moguce po tom polju---"); WriteLn;
  140.         END;
  141.        
  142.     ELSE
  143.         WriteString("---Ucitavanje nije uspelo!!!---"); WriteLn;
  144.     END;
  145.  
  146. END bla.
Add Comment
Please, Sign In to add comment