alvsjo

Periodican niz

Nov 28th, 2016
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 1.50 KB | None | 0 0
  1. //ispitati da li je zadati niz periodican
  2. program niz_period;
  3.  
  4. type
  5.     niz = array[1..20] of integer;
  6. var
  7.  n,p,k,l:integer;
  8.  x,y,z: niz;
  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.  procedure StampaNiza1 (n,p,k:integer; x:niz);
  31.  var i:integer;
  32.  begin
  33.     write('Elementi niza: ');
  34.     for i:=p to k-1 do  write (x[i],',');
  35.     writeln(x[k]);
  36.  end;
  37.  
  38.  function periodican(n:integer; x:niz):integer;
  39.  //ako je x periodican rezultat je osnovni period
  40.  //ako x nije periodican rezultat je 0
  41.  var i,d,k,l:integer; nadjen,r:boolean;
  42.  begin
  43.     i:=2;
  44.     nadjen:=false;
  45.     periodican:=0;
  46.     while (i<n) and not nadjen do
  47.     begin
  48.         if(x[1]=x[i]) then
  49.         begin
  50.             d:=i-1;
  51.             r:=true;
  52.             k:=1;
  53.             while (k<i) and r do
  54.             begin
  55.                 l:=k+d;
  56.                 while (l<=n) and r do
  57.                 begin
  58.                     //writeln(k:4,l:4, x[k]:4,x[l]:4);
  59.                     //readln;
  60.                     r:=x[k]=x[l];
  61.                     l:=l+d;
  62.                 end;
  63.                 k:=k+1;
  64.             end;
  65.         if r then begin nadjen:=true; periodican:=d; end
  66.             else i:=i+1;
  67.         end
  68.         else    i:=i+1;
  69.     end;
  70.    
  71.  end;
  72.  
  73.  begin
  74.     UnosNiza(n,x);
  75.     StampaNiza(n,x);
  76.     p:=periodican(n,x);
  77.     if p>0 then begin writeln(' periodican sa periodom ', p); stampaniza1(n,1,p,x); end
  78.     else writeln('nije periodican');
  79.     readln;
  80.  
  81.  end.
Add Comment
Please, Sign In to add comment