All pastes #753975 Raw Edit

Miscellany

public text v1 · immutable
#753975 ·published 2007-10-29 18:04 UTC
rendered paste body
program rodi_jest_taki_sexy;
uses crt;
const Ilosc=100;
type tab=array [1..Ilosc] of integer;
var a:tab;
    n:byte;
    mini,maksi,k:integer;

procedure los(var a:tab;n:byte);
var i,j,c:byte;
	w:boolean;
begin
     randomize;
     for i:=1 to n do 
     		begin
     			repeat
     			c:=random(100);
     			w:=true;
     			for j:=1 to i do
     			if a[j]=c then w:=false; 
     			until w=true;
				if w=true then a[i]:=c;
				end;
end;


procedure wypis(var a:tab;n:byte);
var i:byte;
begin
     for i:=1 to n do write(a[i]:3);
     writeln;
end;

procedure BubbleSort(var t:tab;n:byte);
var i,j:byte;
    p:integer;
begin
     for i:=1 to n-1 do
         for j:=i+1 to n do
             if t[i]>t[j] then
             begin
                  p:=t[i];
                  t[i]:=t[j];
                  t[j]:=p
             end;
end;

procedure MinMax(l,p:byte;var Min, Max:integer);
var Min1,Min2,Max1,Max2:integer;
begin
     if l=p then
     begin
          Min:=a[l];
          Max:=a[l];
     end else
     if l=p-1 then
        if a[l]>a[p] then
        begin
             Min:=a[p];
             Max:=a[l];
        end else
        begin
             Min:=a[l];
             Max:=a[p];
        end
     else
     begin
          MinMax(l,(l+p) div 2,Min1,Max1);
          MinMax((l+p) div 2+1,p,Min2,Max2);
          if Max1>Max2 then Max:=Max1 else Max:=Max2;
          if Min1<Min2 then Min:=Min1 else Min:=Min2;
     end;
end;

function BinarySearch(var t:tab;    {uporzadkowana tablica poszukiwan}
                          n:byte;   {ilosc elementow tablicy}
                          a:integer):byte;  {szukana liczba}
var l,          {lewy kraniec przedzialu poszukiwan}
    p,          {prawy kraniec przedzialu poszukiwan}
    sr:byte;    {indeks elementu srodkowego biezacego przedzialu}
begin
     BinarySearch:=0;
     l:=1;
     p:=n;
     repeat
           sr:=(l+p) div 2;
           if a=t[sr] then BinarySearch:=sr else
           if a>t[sr] then l:=sr+1 else p:=sr-1;
     until (a=t[sr]) or (l>p);
end;

begin
     clrscr;
     write('podaj n: ');
     readln(n);
     los(a,n);
     wypis(a,n);
     MinMax(1,n,mini,maksi);
     writeln('Min: ',mini);
     writeln('Max: ',maksi);
     BubbleSort(a,n);
     wypis(a,n);
     write('Podaj szukana liczbe: ');
     readln(k);
     writeln('Indeks szukanego elementu: ',BinarySearch(a,n,k));
     readkey;
end.