alvsjo

permutacije

Dec 11th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.01 KB | None | 0 0
  1. program permutacije;
  2. type
  3.     niz = array[1..30] of integer;
  4. var
  5.  n,i,p,k,t,j,broj:integer;
  6.  poslednja:boolean;
  7.  x: niz;
  8.  
  9.  
  10.  procedure UnosNiza (var n:integer;var x:niz);
  11.  var i:integer;
  12.  begin
  13.     write('Broj clanova niza: ');
  14.     readln(n);
  15.     for i:=1 to n do
  16.         begin
  17.         write ('x[',i,']=');
  18.         readln(x[i]);
  19.         end;
  20.  end;
  21.  
  22.  procedure StampaNiza (n:integer; x:niz);
  23.  var i:integer;
  24.  begin
  25.     write('Elementi niza: ');
  26.     for i:=1 to n-1 do  write (x[i],',');
  27.     writeln(x[n]);
  28.  end;
  29.  
  30.  
  31.  
  32.  begin
  33.     write('red permutacija ');
  34.     readln(n);
  35.     for i:=1 to n do x[i]:=i;
  36.     stampaniza(n,x);
  37.     poslednja:=false;
  38.     while not poslednja do
  39.         begin
  40.         i:=n-1;
  41.         while (x[i]>x[i+1]) and (i>=1)
  42.             do i:=i-1;
  43.         if i=0 then poslednja:=true
  44.         else
  45.             begin
  46.             j:=n;
  47.             while x[j]<x[i]do j:=j-1;
  48.             t:=x[i];
  49.             x[i]:=x[j];
  50.             x[j]:=t;
  51.             i:=i+1;
  52.             j:=n;
  53.             while i<j do
  54.                 begin
  55.                 t:=x[i];
  56.                 x[i]:=x[j];
  57.                 x[j]:=t;
  58.                 i:=i+1;
  59.                 j:=j-1;
  60.                 end;
  61.             stampaniza(n,x);
  62.             end;
  63.         end;
  64.  
  65.     readln;
  66.  
  67.  end.
Add Comment
Please, Sign In to add comment