Main.pas
program pagr;
uses g_modulis;
var l, kiek, c, i, p,i1, a_search : integer;
rez, stat : string;
mas : masyvas;
f, outf, st : text;
start,start1,Result: longint;
begin
{$I-}
Assign(f, 'BLA.txt');
Rewrite(f);
for i := 1 to 2000 do
begin
randomize;
mas[i] := random(1000);
write(f, mas[i], ' ');
end;
reset(f);
kiek :=0;
repeat
Writeln(' Enter the result file name: ');
Readln(rez);
Assign(outf, rez);
Rewrite(outf);
Inc(kiek);
if kiek=3 then halt;
until IOResult=0;
kiek :=0;
repeat
Writeln('Enter the statistics file name: ');
Readln(stat);
Assign(st, stat);
Rewrite(st);
Inc(kiek);
if kiek=3 then halt;
until IOResult=0;
{$I+}
p := 1;
while not seekeof(f) do
begin
if seekeoln(f) then
readln(f);
read(f, l);
mas[p] := l;
inc(p);
end;
writeln('First massive');
for i1 :=1 to 2000 do
write(mas[i1],' ');
writeln;
start:=gettime1;
burbulas(mas , n);
writeln('Time of sorting:',gettime1-start, ' mSec');
write(st, gettime1-start );
for c := 1 to 2000 do
begin
write(outf, mas[c]);
write(outf,' ');
write(mas[c],' ');
end;
writeln;
Writeln(' Enter the value of element to find:');
Readln(a_search);
start1:=gettime1;
Result:=Bin_Search (mas, 50, a_search);
if (result > 0) then begin
WriteLn('Time of finding ', GetTime1 - start1);
writeln ('number= ',result) ;
end
else writeln('Not found!');
readln;
close(f);
close(st);
close(outf);
readln;
end.
Module.pas
unit g_modulis;
interface
uses dos;
const n =2000;
type masyvas = array[1..n] of integer;
procedure burbulas(var mas : masyvas; n : integer);
function Gettime1:longint;
Function Bin_Search (mas:masyvas; size:integer; x: integer) : integer;
implementation
procedure burbulas(var mas : masyvas; n : integer);
var i, j, b : integer;
c : boolean;
begin
j:= 1;
repeat
c:=true;
for i:=1 to n-j do
if mas[i] > mas[i+1] then
begin
b:= mas[i];
mas[i]:= mas[i+1];
mas[i+1]:=b;
c:=false;
end;
j:=j+1;
until (j=n) or c
end;
function Gettime1:LongInt;
var h,m,s,ms:word;
begin
gettime(h,m,s,ms);
gettime1:=ms+100*(s+60*(m+60*h));
end;
Function Bin_Search (mas:masyvas; size:integer; x: integer) : integer;
Var left, right, center: integer;
begin
left := 1; right := size;
repeat center := (right + left)
div 2;
if mas[ center ] >= X
then right := center
else left := center;
until (right - left = 1) or (mas[ center ] = X);
bin_search:=center;
end;
end.