Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- label lab2;
- procedure fullsearch(a:integer);
- var i,k,n:integer;
- s:string;
- f, t:text;
- m:array[1..15] of string;
- begin
- writeln('Selected method: Full search. Processing...');
- assign(t,'test.txt');
- assign(f,'result_fullsearch.txt');
- reset(t);
- rewrite(f);
- i:=1;
- readln(t, s);
- writeln(f,'Äëÿ ñòðîêè "',s,'" - 0 ñðàâíåíèé');
- m[i]:=s;
- while (i<15) do
- begin
- readln(t, s);
- k:=1;
- n:=0;
- while (k <= i) and (s <> m[k]) do
- begin
- inc(k);
- inc(n);
- end;
- if (k > i) then
- begin
- inc(i);
- m[i]:=s;
- end
- else inc(n);
- writeln(f,'Äëÿ ñòðîêè "',s,'" - ',n,' ñðàâíåíèé');
- end;
- close(t);
- close(f);
- end;
- procedure binsearch(a:integer);
- var s:string;
- m:array[1..15] of string;
- i,k,n,l,r,x:integer;
- f:boolean;
- t, ft:text;
- begin
- writeln('Selected method: Binary search. Processing...');
- assign(ft,'test.txt');
- reset(ft);
- assign(t,'result_binsearch.txt');
- rewrite(t);
- i:=1;
- readln(ft,s);
- writeln(t,'Äëÿ ñòðîêè "',s,'" - 0 ñðàâíåíèé');
- m[i]:=s;
- while (i < 15) do
- begin
- readln(ft,s);
- n:=0;
- l:=1;
- r:=i;
- f:=false;
- while (l <= r) do
- begin
- x:=(l+r) div 2;
- if (m[x] = s) then
- begin
- l:=r+1;
- f:=true;
- end
- else
- if (m[x] > s) then r:=x-1
- else l:=x+1;
- inc(n);
- end;
- if not f then
- begin
- k:=i;
- while (k > 0) and (m[k] > s) do
- begin
- m[k+1]:=m[k];
- dec(k);
- end;
- m[k+1]:=s;
- inc(i);
- end;
- writeln(t,'Äëÿ ñòðîêè "',s,'" - ',n,' ñðàâíåíèé');
- end;
- close(ft);
- close(t);
- end;
- procedure hash(a:integer);
- var s:string;
- hash:array[0..14] of boolean;
- m:array[0..14] of string;
- i,k,n,l,h,u:integer;
- f:boolean;
- t, ft:text;
- begin
- writeln('Selected method: Hashing. Processing...');
- assign(ft,'test.txt');
- reset(ft);
- assign(t,'result_hash.txt');
- rewrite(t);
- for i:=0 to 14 do hash[i]:=false;
- i:=0;
- while (i < 15) do
- begin
- readln(ft, s);
- n:=0;
- l:=length(s);
- h:=0;
- for u := 1 to l do
- h :=(h + ord(s[u])) mod 15;
- if (not hash[h]) then
- begin
- hash[h]:=true;
- m[h]:=s;
- inc(i);
- end
- else
- begin
- inc(n);
- f:=false;
- k:=1;
- if (m[h] <> s) then
- while not f do
- begin
- if ((h - k) >= 0) then
- if (not hash[h-k]) then
- begin
- hash[h-k]:=true;
- m[h-k]:=s;
- inc(i);
- f:=true;
- end
- else
- begin
- inc(n);
- if (m[h-k] = s) then f:=true;
- end;
- if (not f) then
- if ((h + k) <= 14) then
- if (not hash[h+k]) then
- begin
- hash[h+k]:=true;
- m[h+k]:=s;
- inc(i);
- f:=true;
- end
- else
- begin
- inc(n);
- if (m[h+k] = s) then f:=true;
- end;
- inc(k);
- end;
- end;
- writeln(t,'Äëÿ ñòðîêè "',s,'" - ',n,' ñðàâíåíèé');
- end;
- close(ft);
- close(t);
- end;
- var k:char; a:integer;
- begin
- writeln('Select the method of data processing:');
- writeln('1. Full search');
- writeln('2. Binary search');
- writeln('3. Hashing');
- lab2:
- readln(k);
- case k of
- '1': fullsearch(a);
- '2': binsearch(a);
- '3': hash(a);
- else
- begin
- writeln('Error! Please type the number from 1 to 3!');
- goto lab2;
- end;
- end;
- writeln('All data were processed.');
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement