Osnovy_informatiki_-_9_Tipy_dannykh
.pdfПоиск по условию, передаваемому как параметр (пример использования)
function LZ(x:integer):boolean; begin
Result:= x>0; end;
function Cont5(x:integer) boolean; var d:integer;
begin result:=false; x:=abs(x);
while (x>0) and not result do begin
d:=x mod 10; result:=d=5; x:= x div 10
end
end; |
Чердынцева М.И., мехмат ЮФУ |
31 |
10.11.2012 |
Поиск по условию, передаваемому как параметр (пример использования)
k:=Find(A, n, LZ); {поиск первого положительного}
M:=Find(B, l, Cont5);
{поиск числа, в котором встречается цифра 5}
10.11.2012 |
Чердынцева М.И., мехмат ЮФУ |
32 |
Проверить, что массив упорядочен по возрастанию элементов
function IsGrow(const A: IArr; n: integer): boolean; var i: integer;
begin
i:=1; result:=true; while (i<n) and result do begin
result:=a[i]<a[i+1];
i:=i+1;
end;
end;
10.11.2012 |
Чердынцева М.И., мехмат ЮФУ |
33 |
Количество по условию
function Count(const A:IArr; n:integer; Pred:IPredicate):integer;
var i: integer; begin Result:=0;
for i:=1 to n do if Pred(a[i]) then
Inc(Result);
end;
10.11.2012 |
Чердынцева М.И., мехмат ЮФУ |
34 |
Минимум по условию
procedure MinElemCond(const A: IArr; n: integer; var min: real; var minind: integer;
Pred: IPredicate); var i: integer;
begin
min:=MaxInt; minind:=0; for i:=1 to n do
if Pred(a[i]) and (a[i]<min) then begin
min:=a[i];
minind:=i;
end;
end;
10.11.2012 |
Чердынцева М.И., мехмат ЮФУ |
35 |
Удаление всех по условию
procedure Delete(var a:IArr; var n:integer; Pred: IPredicate);
var i,j: integer; begin
j:=0;
for i:=1 to n do
if not Pred(a[i]) then begin
j:=j+1;
a[j]:=a[i];
end
n:=j;
end;
10.11.2012 |
Чердынцева М.И., мехмат ЮФУ |
36 |
Слияние двух упорядоченных массивов
procedure Merge(const a: IArr; n: integer;
const b: IArr; m: integer; var c: IArr); var ia,ib,ic: integer;
begin // a,b упорядочены по возрастанию a[n+1]:=MaxInt; // барьер b[m+1]:=MaxInt; // барьер
ia:=1; ib:=1;
for ic:=1 to n+m do
if a[ia]<b[ib] then begin c[ic]:=a[ia]; ia:=ia+1 end
else begin
c[ic]:=b[ib]; ib:=ib+1 end;
end;
10.11.2012 |
Чердынцева М.И., мехмат ЮФУ |
37 |
Поиск в упорядоченном массиве (двоичный поиск)
procedure BinarySearch(const a: IArr; n: integer; x: integer; var ind: integer);
var i,j,k: integer; begin
i:=1; j:=n; repeat
k:=(i+j) div 2; if x>a[k] then
i:=k+1 else j:=k-1;
until (a[k]=x) or (i>j); if a[k]=x then
ind:=k else ind:=0;
end;
10.11.2012 |
Чердынцева М.И., мехмат ЮФУ |
38 |