Алгоритмы для студентов
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
Здесь будет ряд алгоритмов из курса лекций "Основы программирования"
Вывод массива
procedure Print<T>(a: array of T; delim: string := ' ');
begin
foreach x: T in a do
write(x, delim);
end;
// С переходом на следующую строку
procedure Println<T>(a: array of T; delim: string := ' ');
begin
Print(a, delim);
writeln;
end;
Заполнение массива случайными числами
procedure CreateRandomArray(var a: array of integer;
n: integer);
begin
SetLength(a,n);
for var i:=0 to n-1 do
a[i] := random(100);
end;
Инвертирование массива
procedure Invert<T>(a: array of T);
begin
var n := a.Length;
for var i:=0 to n div 2 - 1 do
Swap(a[i],a[n-i-1]);
end;
Поиск элемента по заданному значению
// С помощью for
function Find<T>(a: array of T; x: T): integer;
begin
Result := -1;
for var i := 0 to a.Length - 1 do
if a[i] = x then
begin
Result := i;
break;
end;
end;
// С помощью while
function FindWhile<T>(a: array of T; x: T): integer;
begin
var n := a.Length;
var i := 0;
while (i<n) and (a[i]<>x) do
i += 1;
if i=n then
Result := -1
else Result := i;
end;
// Поиск с барьером
function FindWithBarrier<T>(a: array of T; n: integer;
x: T): integer;
begin
Assert((0 < n) and (n < a.Length));
a[n] := x;
var i := 0;
while a[i]<>x do
i += 1;
if i=n then
Result := -1
else Result := i;
end;
Минимальный элемент и его индекс
procedure MinElem(a: array of integer;
var min: integer; var minind: integer);
begin
min := a[0];
minind := 0;
for var i:=1 to a.Length-1 do
if a[i]<min then
begin
min := a[i];
minind := i;
end;
end;
Сдвиг влево
procedure ShiftLeft<T>(a: array of T);
begin
for var i:=0 to a.Length-2 do
a[i] := a[i+1];
a[a.Length-1] := default(T);
end;